前言
大家好!本次介绍一下Java以及环境搭建。Java是一门面向对象编程语言,不仅吸收了C++强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。接下来将带大家一起了解一下“世界上最好的语言”。
文章目录
1.Java的概述
1.1 Java是什么
Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。
1.2 Java的背景
Java 语言源于 1991 年 Sun 公司 James Gosling 领导的的 Oak 项目,1995 年 Sun 公司正式起名为 Java,并提出“Write once, Run anywhere" 的口号。 翻译过来是“一次编译,到处运行”。Java的创始人是詹姆斯·高斯林,被称为“Java之父”。Java自1995诞生,至今已经16年历史。Java名字的来源:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java的标识也正是一杯正冒着热气的咖啡。
据詹姆斯·高斯林回忆,最初这个为TV机顶盒所设计的语言在Sun内部一直称为Green项目。我们的新语言需要一个名字。高斯林注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。
在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到高斯林的坚决反对。排在第二和第三的都没有通过律师这一关。只有排在第四位的名字、得到了所有人的认可和律师的通过,这个名字就是Java。
Java诞生以来,Java就像爪哇咖啡一样誉满全球,成为实至名归的企业级应用平台的霸主。而Java语言也如同咖啡一般醇香动人。
1.3 Java是“世界上最好的语言”么
不是,因为在每个领域都有更合适的编程语言。
C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。
JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。
Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。
Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。
Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如Docker、Kubernetes 等。
编写网页用 PHP,函数式编程有 Lisp/Scala,编写 iOS 程序有 Swift/Objective-C。
一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。
那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?
其一,语法比较简单,学过计算机编程的开发者都能快速上手。
其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,
Android 移动终端应用开发等等。
最重要的一点是符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性,编译时检查,较为高效的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到很多互联网公司的青睐。没有短板,容易从市场上找到 Java 软件工程师,软件公司选择 Java 作为主要开发语言,再在特定的领域使用其他语言协作编程,这样的组合选择,肯定是不会有大的问题。 所以综合而言,Java 语言全能方面是最好的。
我们来一起看看Java社区的概况:
Java 是一门开放的语言,其开源社区也是参与者众多。最有名的应当数 Apache 社区,目前已经拥有近 200 个顶级项目,其中绝大多数是 Java 语言项目。在 Java 生态圈中,具有重要地位的如 Spring、Ant、Commons、Tomcat、Xerces、Maven、 Struts、Lucene、ActiveMQ、CXF、Camel、Hadoop 等等。很多技术时代,一大批 Java 项目加入,如 Web 时代的 Velocity、Wicket;JavaEE 相关的 Tomee、OpenJPA、OpenWebBeans、Myfaces;WebService 时代的 jUDDI、Axis、ServiceMix;Osgi 时期的 Flex、Karaf;大数据时代的 HBase、Hive、ZooKeeper、Cassandra;云时代的 Mesos、CloudStack 等等。
涉及到软件开发的方方面面,可以说当今几乎所有的中型以上 Java 应用中,都会有 Apache 开源项目的身影。国内最早参与 Apache 社区的以国外软件公司国内研发团队成员为主,如红帽、IONA、Intel、IBM 研发中心等。如今国内互联网公司和软件公司也不断的参与,特别是开始主导一些 Apache 项目,如 Kylin 等。
JBoss 开源社区,包含了 50 多个 Java 开源项目,其中有 Hibernate、Drools、jBPM 等业界知名开源项目,也有Undertow、Byteman、Narayana 等名气不算大,但绝对是相应领域业界的顶级优秀项目。当前 JBoss 开源社区主要以企业应用中间件软件为主,RedHat 是主要的技术贡献力量。
Eclipse 开源社区,之前主要是包含 Eclipse IDE 的项目,后来也逐步进行多方面的扩展,比如 OSGi,服务器等,目前一些知名 Java 项目,如 Jetty、Vertx 等都是 Eclipse 开源组织成员。此外 IOT 目前是 Eclispe 的一个重点方向,在这里可以找到完整的 IOT Java 开发方案。
其三,在Spring 开源社区,以 SpringFramework 为核心,包括 SpringBoot、SpringCloud、SpringSecurity、SpringXD 等开源项目,在国内有广泛的应用场景。
所以说,Java不仅仅是一门编程语言,它是一个综合的技术体系,是面向对象思想的规范 。
下面我们通过TIOBE社区编程语言排行榜提供的数据来一起感受一 下,Java到底有多“火” 。
这里我们看到Python是排行第一,那么Python是最好的语言吗?不一定。Python的语法简单,大多数情况下是对数据的处理、分析和总结。但C、C++、Java三门语言热度多年来一直保持稳定,是编程语言的首要选择。
1.4 Java的环境安装
1.4.1 Java的开发工具JDK
JDK的Java的开发工具,包括Java运行环境JRE和Java虚拟机JVM,JVM是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行
我们可以直接在JDK官网下载,以Windows10为例,安装好后我们就可以设置环境变量了。
第一步:找到此电脑,鼠标右键点属性
第二步:下拉找到高级系统设置
第三步:找到系统属性的高级,点击环境变量
第四步:在系统变量中点击新建,变量名为JAVA_HOME,变量值是JDK的安装路径,我的是默认安装路径:C:\Program Files\Java\jdk1.8.0_192,注意前后不能有空格。
第五步:配置Path
, 需要注意Path
路径一般是存在的,只需要追加即可。这里使用%JAVA_HOME%的意思是直接引用上面配置的JAVA_HOME
的值,这样的好处在于,如果Java安装目录发生变话,主需要修改JAVA_HOME
的值,不用再修改Path
变量的值。
在系统变量中找到Path,点击编辑,再点新建,追加的值为%JAVA_HOME%\bin
第六步:在系统变量中点击新建,创建系统变量CLASSPATH,最后再点确定。
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意:变量值的前面的.;不能省略,前后不能有空格。
第七步:验证Java环境是否安装成功,我们按键盘win+r,输入cmd点确认。
输入命令java -version,我们可以看到安装JDK的版本
再输入命令javac,可以看见信息,说明环境安装成功了。
1.4.2 Java的集成开发环境IDEA
下载社区版就行,官网:https://www.jetbrains.com/zh-cn/idea/download/#section=windows
IDEA的基础设置:https://www.bilibili.com/video/BV13T4y1L7qP/
2.Java的特点
2.1 简单性
Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
2.2 面向对象
什么是面向对象? 这里我们用木匠打一个比方,一个“面向对象”的木匠始终关注的是所制作的椅子,第二位才是所使用的工具;而一个“非面向对象的”木匠首先考虑的是所使用的工具。
在Java的世界里,一切皆对象。
Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。
2.3 分布式
Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
2.4 健壮性
Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多
在其他语言中仅在运行时才能够检测出来的问题。
2.5 安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范常见的各种攻击:
- 运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
- 破坏自己进程空间之外的内存。
- 未经授权读写文件
2.6 体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。
2.7 可移植性
与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。
2.8 解释型
Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程。所以开发过程也变得更加快捷,更加具有探索性。
2.9 高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下可能需要更加高效的性能。字节码可以(在运行时刻)动态的翻译成对应运行这个应用的特定cpu的机器码。
2.10 多线程
Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。
2.11 动态性
Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)
3.Java的第一个程序
3.1 HelloWorld代码解析
public class HelloWorld{
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
public:访问修饰限定符
class:关键字,可用来定义一个类(抽象的)
HelloWorld:类的名称,如果是被class修饰的,需要和文件名一致
String[] args:形式参数,是一个数组,String是类型,args是数组名,类似于C语言的int arr[]
System.out.println():是Java的打印函数,类似于C语言的printf
3.2 HelloWorld的编译运行
如果我们没有IDEA等Java的编译器,代码能不能编译运行呢?
前提要先安装好JDK,我们就能用命令行编译运行代码。
通过图片我们可以直Java代码的编译过程:
Javac命令:javac 文件名.java
Java命令:java 文件名
推荐一个代码编辑器:Sublime Text3,把后面JAVA文件和CLASS文件默认以改应用打开
编译:
1.新建一个文本文件,把后缀改为.java,用Sublime Text3打开
2.键盘win+r键,输入cmd打开命令行,默认是在C盘,此时我们可先转到D盘,输入d:,然后输入cd + 路径
3.输入javac命令编译,此时我们看到多了一个.class文件,这是一个字节码文件
4.输入java命令运行,我们会在屏幕上看到打印了HelloWorld