1. Java语言概述
Java 的发展历史;JDK 安装;HelloWorld 程序编写
1. Java语言概述
1.1 计算机语言发展历史
语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
第一代:机器语言
第二代:汇编语言
第三代:高级语言
面向过程:C、Fortran、Cobol、Pascal、ADA等
面向对象:C++、Java、C#等
编程的学习,看的不是语言,任何一门主流语言,只要学透了,都够吃一辈子。
1.2 Java 发展史
1991年,詹姆斯·高斯林(James Gosling)在 SUN(Stanford University Network)公司的工程师小组想要设计这样一种小型计算机语言。该语言主要用于像电视盒这样的消费类电子产品。另外,由于不同的厂商选择不同的CPU和操作系统,因此,要求该语言不能和特定的体系结构绑在一起,要求语言本身是中立的,也就是跨平台的。所以,将这个语言命名为“Green”,类似于绿色软件的意思。后来,改名为Oak,橡树的意思。改名后发现已经有一种语言叫这个名字了,再改名叫Java。
2009年,Sun公司被甲骨文公司收购,所以我们现在访问Oracle官网 即可。Java语言发展到今天经历了一系列的过程:
1.3 Java的核心优势
跨平台是Java语言的核心优势,赶上最初互联网的发展,并随着互联网的发展而发展,建立了强大的生态体系,目前已经覆盖IT各行业的“第一大语言”,是计算机界的“英语”。其在企业,安卓,大数据,云计算等方面都有涉及。
虽然,目前也有很多跨平台的语言,但是已经失去先机,无法和Java强大的生态体系抗衡。Java仍将在未来几十年成为编程语言的主流语言。
Java虚拟机是Java实现跨平台的核心,Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。事实上,基于Java虚拟机(JVM)的编程语言还有很多种:
1.4 Java各版本的含义
JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用。 这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本。Applet后来为Flash取代,Flash即将被HTML5取代。
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用。 JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:JDBC是让程序员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上 JavaME是JavaSE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库:javax.microedition.io.*等。该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。
很多人开始会误解为安卓开发就是JavaME,但这两个是完全不同的内容。
1.5 Java的特性和优势
跨平台/可移植性 这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
安全性 Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。
面向对象 面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言。
简单性 Java就是C++语法的简化版,我们也可以将Java称之为“C++-”,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。
高性能 Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近C++的效率。 因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。
分布式 Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。
多线程 多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
健壮性 Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。
1.6 Java应用程序的运行机制
计算机高级语言的类型主要有编译型
和解释型
两种,而Java语言是两种类型的结合。
Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java
;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class
; 最后利用虚拟机(解释器,java)解释执行。
1.7 JVM、JRE和JDK
JVM(Java Virtual Machine):Java虚拟机 JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。 不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 Java虚拟机是实现跨平台的核心机制。如图所示。
JRE(Java Runtime Environment):Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit):包含JRE,以及增加编译器和调试器等用于程序开发的文件。
JDK、JRE和JVM的关系如图所示。
总结:
如果只是要运行Java程序,只需要JRE就可以。JRE通常非常小,其中包含了JVM。
如果要开发Java程序,就需要安装JDK。
2. 开发环境准备
2.1 JDK的下载和安装
最安全的也是最可靠的是通过官方网站获取JDK,但是官网的下载速度以及目前需要Oracle账号才能下载JDK,我们可以通过国内的镜像下载,或者其他开发者的下载链接。
注意:针对不同的操作系统,需要下载对应版本的JDK。如果无法确定Windows版本,可以右键此电脑点击“属性”,即可查看系统信息。 1. 32位操作系统只能安装32位JDK; 2. 64位操作系统可安装32位JDK,也可以安装64位JDK。
2.2 安装JDK
Windows版JDK安装,基本是傻瓜式安装,直接下一步即可。默认的安装路径是在C:\\Program Files\\
下,为方便统一管理,最好修改下安装路径,将与开发相关的软件都安装到一个文件夹下,例如E:\\develop\\
。注意,安装路径不要包含中文或者空格等特殊字符(使用纯英文目录)。
小知识:8 Update 121表示Jdk8更新了121次后的版本
我们再进入JDK的安装目录,可以看到如下的结构:
名称 | 说明 |
bin | 该路径下存放了JDK的各种工具命令,即一些可执行的二进制文件。javac和java就放在这个目录。 |
include | 该路径下存放了一些平台特定的头文件。 |
lib | 该路径下存放了JDK工具的一些补充JAR包。 |
src.zip | JDK相关JAVA类的源代码。 |
2.3 环境变量Path的配置
环境变量是在操作系统中一个具有特定名字的对象, 它包含了一个或者多个应用程序所将使用到的信息。
Path是一个常见的环境变量,它告诉操作系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还应到哪些目录下寻找。
设置Path环境变量的步骤如下
右键此电脑——>属性——>高级系统设置。
单击环境变量按钮,进入环境变量操作主界面
单击新建按钮,新建JAVA_HOME变量(用于说明JDK的安装目录)
修改系统环境变量Path,添加
%JAVA_HOME%\bin
2.4 测试JDK安装成功
Windows + R
,输入cmd进入命令行窗口
输入java -version
以及javac -version
查看是否安装成功
3. 开发第一个Java程序
3.1 HelloWorld案例编写并执行
开发Java程序,需要三个步骤:编写程序,编译程序,运行程序。
使用记事本,编写代码
新建文本文档文件,修改名称为HelloWorld.java。
用记事本打开HelloWorld.java文件,输写程序内容。
注意:代码中的引号、分号必须为英文引号和分号,不能是中文全角的引号和分号;注意大小写。
编译和运行
打开命令行窗口,进入Java文件所在目录;执行命令:javac HelloWorld.java,生成class文件。
3.2 HelloWorld案例常见问题
3.2.1 BUG
在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。
3.2.2 BUG的解决
具备识别BUG的能力:多看
具备分析BUG的能力:多思考,多查资料
具备解决BUG的能力:多尝试,多总结
3.2.3 HelloWorld案例常见问题
非法字符问题。Java中的符号都是英文格式的。
大小写问题。Java语言对大小写敏感(区分大小写)。
在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件。
编译命令后的java文件名需要带文件后缀.java
运行命令后的class文件名(类名)不带文件后缀.class
3.2.4 第一个Java程序的总结和提升
Java对大小写敏感,如果出现了大小写拼写错误,程序无法运行。
关键字 public 被称作访问修饰符(access modifier),用于控制程序的其它部分对这段代码的访问级别。
关键字 class 的意思是类。Java是面向对象的语言,所有代码必须位于类里面。
一个源文件中至多只能声明一个public的类,其它类的个数不限,如果源文件中包含一个public 类,源文件名必须和其中定义的public的类名相同,且以“.java”为扩展名。
一个源文件可以包含多个类class。
正确编译后的源文件,会得到相应的字节码文件,编译器为每个类生成独立的字节码文件,且将字节码文件自动命名为类的名字且以“.class”为扩展名。
main方法是Java应用程序的入口方法,它有固定的书写格式:
public static void main(String[] args) {…}
在Java中,用花括号划分程序的各个部分,任何方法的代码都必须以“{”开始,以“}”结束, 由于编译器忽略空格,所以花括号风格不受限制。
Java中每个语句必须以分号结束,回车不是语句的结束标志,所以一个语句可以跨多行。
Last updated