Java快速入门
1 Java简介
太阳计算机系统(中国)有限公司 1982年成立 2009年被Oracle收购
甲骨文股份有限公司 1977年成立 2013年成为全球第二大软件公司
詹姆斯·高斯林 (James Gosling)Java编程语言的共同创始人之一 一般公认他为“Java之父”
1.1 Java发展史
20世纪90年代,出现了单片机。 1991年,Sun公司成立了Green项目小组,专攻家电产品上的嵌入式应用,开发出了一种称为Oak的面向对象语言。 1992年,Oak语言开发成功后,因为缺乏硬件的支持而无法进入市场,最终被搁置了下来。
1995年,互联网的蓬勃发展给了Oak机会。Sun公司推出了可以嵌入网页的Applet小程序,并将Oak更名为Java。 1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。 1997年2月,Sun公司发布了JDK 1.1,在随后的3周时间里,达到了22万次的下载量。
1998年12月,Sun公司发布了第二代Java平台的企业版J2EE。 1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2 Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器; J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;
2000年5月,Sun公司发布了JDK1.3、JDK1.4和J2SE1.3。 2001年9月,Sun公司发布了J2EE1.3。 2002年2月,Sun公司发布了J2SE1.4。 2004年9月,Sun公司发布了J2SE1.5,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0,代号为“Tiger”。 2005年6月,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。 2006年,Sun公司宣布,将Java技术作为免费软件对外发布 。
2009年,Oracle公司宣布收购Sun 。 2010年,Java之父詹姆斯·高斯林从Oracle公司辞职。 2011年,Oracle公司发布了Java7。 2014年,Oracle公司发布了Java8。 2017年,Oracle公司发布了Java9。 2018年,Oracle公司发布了Java10和Java11。 2019年,Oracle公司发布了Java12和Java13。 2020年,Oracle公司发布了Java14。
1.2 Java特点
- Simple 简单性
Java语言是一种相当简洁的面向对象程序设计语言。Java语言省略了C++语言中所有的难以理解、容易混淆的特性。Java更加严谨、简洁。
- Object oriented 面向对象
面向对象是Java最重要的特性。Java语言的设计完全是面向对象的。Java支持静态和动态风格的代码继承及重用。
- Distributed 分布式
Java语言具有强大的、易于使用的连网能力,非常适合开发分布式计算的程序。Java应用程序可以象访问本地文件系统那样通过URL访问远程对象。使用Java语言编写Socket通信程序十分简单,使用它比使用任何其它语言都简单。
- Multithreaded 多线程
线程,是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程处理能力使得程序能够具有更好的交互性、实时性。Java在多线程处理方面性能超群,具有让你惊喜的强大功能,而且在Java语言中进行多线程处理很简单。
- Dynamic 动态性
Java是一种动态的语言,在Java语言中,可以简单、直观地查询运行时信息,也可以将新代码加入到一个正在运行的程序中去。
- Architecture neutral 架构中立
Java源程序被编译成一种高层次的与机器无关的字节码格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
- Robust 健壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。
- Secure 安全性
用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用"特洛伊 "木马等欺骗手段访问对象的私有成员。
1.3 Java是什么?
Java既是编程语言又是平台。
- Java编程语言
在Java编程语言中,首先将所有源代码编写为以.java扩展名结尾的纯文本文件。然后,这些源文件.class由javac编译器编译为文件。一个.class文件不包含的代码是原产于你的处理器; 相反,它包含字节码 -Java虚拟机(Java VM)的机器语言。然后,java启动器工具将使用Java虚拟机的实例运行您的应用程序。
因为Java VM在许多不同的操作系统上都可用,所以相同的.class文件能够在Microsoft Windows,Solaris™操作系统(Solaris OS),Linux或Mac OS上运行。一些虚拟机(例如 Java SE HotSpot概览)在运行时执行其他步骤,以提高应用程序的性能。这包括各种任务,例如查找性能瓶颈和重新编译(使用本机代码)经常使用的代码部分。
- Java平台
一个平台是在程序运行的硬件或软件环境。我们已经提到了一些最受欢迎的平台,例如Microsoft Windows,Linux,Solaris OS和Mac OS。大多数平台可以描述为操作系统和底层硬件的组合。Java平台与大多数其他平台的不同之处在于,它是一个基于软件的平台,可以在其他基于硬件的平台上运行。
Java平台具有两个组件:
- 在Java虚拟机
- 在Java应用程序编程接口(API)
Java虚拟机是Java平台的基础,并已移植到各种基于硬件的平台上。 API是大量现成的软件组件的集合,这些组件提供了许多有用的功能。它分为相关类和接口的库。这些库称为软件包。 作为独立于平台的环境,Java平台可能比本地代码慢一些。但是,编译器和虚拟机技术的进步使性能接近本机代码,而不会威胁可移植性。 术语“ Java虚拟机”和“ JVM”是指用于Java平台的虚拟机。
1.4 Java功能
- 开发工具:
开发工具提供了编译,运行,监视,调试和记录应用程序所需的一切。作为新开发人员,您将使用的主要工具是javac编译器,java启动器和javadoc文档工具。
- 应用程序编程接口(API):
API提供Java编程语言的核心功能。它提供了许多有用的类,可以在您自己的应用程序中使用。它涵盖了从基本对象到网络和安全性,再到XML生成和数据库访问等等的所有内容。
- 部署技术:
JDK软件提供了标准的机制,用于将应用程序部署到最终用户。
- 用户界面工具包:
JavaFX,Swing和Java 2D工具包使创建复杂的图形用户界面(GUI)成为可能。
- 集成库:
诸如JDBC API,Java接口定义语言(IDL)API,Java命名和目录接口(JNDI)API,Java RMI和通过Internet ORB协议技术进行Java远程方法调用的集成库。
1.5 Java优势
- 快速入门:
尽管Java编程语言是一种功能强大的面向对象的语言,但它易于学习,特别是对于已经熟悉C或C ++的程序员而言。
- 编写更少的代码:
通过比较程序指标(类计数,方法计数等),可以看出,用Java编程语言编写的程序可以比使用C ++编写的同一程序小四倍。
- 编写更好的代码:
Java编程语言鼓励良好的编码习惯,而自动垃圾回收可以帮助您避免内存泄漏。它的面向对象,其JavaBeans™组件体系结构以及范围广泛,易于扩展的API使您可以重用现有的经过测试的代码,并减少错误。
- 更快地开发程序:
Java编程语言比C ++更简单,因此,用它编写时,您的开发时间可能会快两倍。您的程序还将需要更少的代码行。
- 避免平台依赖性:
通过避免使用其他语言编写的库,可以使程序可移植。
- 一次编写,可在任何地方运行:
因为用Java编程语言编写的应用程序被编译为与机器无关的字节码,所以它们可以在任何Java平台上一致地运行。
- 更轻松地分发软件:
使用Java Web Start软件,用户只需单击一下鼠标即可启动您的应用程序。启动时会自动进行版本检查,以确保用户始终了解最新版本的软件。如果有更新,则Java Web Start软件将自动更新其安装。
2 “Hello World”程序
要编写第一个程序,您需要:
Java SE开发套件8(JDK 8)
您现在可以 下载Windows版本。(请确保您下载的是JDK,而不是 JRE。)请查阅 安装说明。
文字编辑器
在此示例中,我们将使用Windows平台附带的简单编辑器记事本。
集成开发人员环境(IDE)
流行的选择包括Eclipse、IntelliJ IDEA,Spring Tool Suite或Visual Studio Code等等。
2.2 使用记事本创建第一个应用程序
创建一个源文件
首先,启动编辑器。您可以从开始菜单中选择程序>附件>记事本,启动记事本编辑器。在新文档中,键入以下代码:
/**
* The HelloWorldApp class implements an application that
* simply prints "Hello World!" to standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
将代码保存在名为的文件中HelloWorldApp.java。要在记事本中执行此操作,请首先选择“ 文件”>“另存为”菜单项。然后,在“ 另存为”对话框中: 使用“ 保存在”组合框,指定用于保存文件的文件夹(目录)。在这个例子中,该目录是myapplication在上C驱动器。 在“ 文件名”文本字段中,输入"HelloWorldApp.java",包括引号。 从“ 保存类型”组合框中,选择“ 文本文档(* .txt)”。 在“ 编码”组合框中,将编码保留为ANSI。 完成后,对话框应如下 所示。现在,单击“ 保存”,然后退出记事本。
将源文件编译成.class文件
调出外壳程序或“命令”窗口。您可以从开始菜单中选择运行...,然后输入来执行此操作cmd。外壳窗口应类似于 下图。
提示符显示您的当前目录。出现提示时,当前目录通常是Windows的主目录(如上图所示)。 要编译源文件,请将当前目录更改为文件所在的目录。例如,如果你的源目录myapplication中的C驱动器,在提示符后键入以下命令输入: cd C:\ myapplication 现在,提示应更改为C:\myapplication>。
现在您可以编译了。在提示符下,键入以下命令,然后按Enter。 javac HelloWorldApp.java 编译器已生成一个字节码文件HelloWorldApp.class。在提示符下,键入dir以查看生成的新文件,如下所示: C:\ myapplication> javac HelloWorldApp.java C:\ myapplication> dir 有了.class文件后,就可以运行程序了。
运行程序
在同一目录中,在提示符下输入以下命令: java -cp. HelloWorldApp 您应该在屏幕上看到以下内容: C:\ myapplication> java -cp. HelloWorldApp Hello World!
2.3 使用Eclipse创建第一个应用程序
创建一个IDE项目
启动Eclipse IDE。
在Eclipse IDE中,选择“ File” |“ New”|“ Project”|“ Java Project”。新项目...。
在“ New Java Project”向导中,输入“ Project Name”,如下图所示:
单击”Finish”完成。
在IDE中创建并打开该项目。您应该看到以下组件: “ Project Explorer”窗口,其中包含项目组件的树形视图,包括源文件,代码所依赖的库等。 在导航窗口中,你可以用它来快速浏览所选类的各元素之间。
在源文件中添加代码
在src文件夹上单击鼠标右键,选择“ New”|“ Class”。创建新类。
在“Package”字段中,键入helloworldapp, 在“Name”字段中,键入HelloWorldApp, 选中“public static void main(String[] args) ”多选框。
补充完成以下代码:
/**
* The HelloWorldApp class implements an application that
* simply prints "Hello World!" to standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
运行程序 从IDE的菜单栏中,选择“运行 | 运行主项目。 下图显示了您现在应该看到的内容。
3 “Hello World”讲解
3.1 源代码注释
以下粗体字定义了“ Hello World!” 的注释:
/**
* HelloWorldApp类实现了一个应用程序
* 打印“Hello World!”标准输出
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // 打印字符串
}
}
注释被编译器忽略,但对其他程序员有用。Java编程语言支持三种注释:
/* text */
编译器会忽略从/*到的所有内容*/。
/** documentation */
这表示文档注释。在准备自动生成的文档时,该工具使用文档注释。
// text
编译器将忽略从//行尾到行尾的所有内容。
3.2 HelloWorldApp类定义
以下粗体字开始“ Hello World!”的类定义块。应用:
/**
* HelloWorldApp类实现了一个应用程序
* 打印“Hello World!”标准输出
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // 打印字符串
}
}
如上所示,类定义的最基本形式是:
class name {
。。。
}
关键字class开始于一个名为的类的类定义name,并且每个类的代码出现在上面用粗体标记的大括号之间。
3.3 main方法
以下粗体文本开始main方法的定义:
/**
* HelloWorldApp类实现了一个应用程序
* 打印“Hello World!”标准输出
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // 打印字符串
}
}
在Java编程语言中,每个应用程序都必须包含main方法: public static void main(String[] args) 修饰符public和static可以按任何顺序编写,但约定俗成如上所述使用。 您可以为参数指定任意名称,但是大多数程序员都选择“ args”。 该main方法类似于mainC和C ++中的功能。它是应用程序的入口点,随后将调用程序所需的所有其他方法。
最后一行: System.out.println(“ Hello World!”); 使用System核心库中的类打印“ Hello World!”。
4 常见问题
4.1 编译器问题
错误:'javac' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
原因:如果收到此错误,表示Windows找不到编译器(javac)。
错误:仅当显式请求注释处理时才接受类名称 'HelloWorldApp'
原因:如果收到此错误,表示在编译程序时忘记了添加.java后缀。
4.2 语法错误
错误:HelloWorldApp.java:7:
错误: 需要';' System.out.println("Hello World!") // 打印字符串 ^ 1 个错误 原因:这是由于;在语句末尾省略分号()导致的错误。
4.3 运行时问题
错误:找不到或无法加载主类 HelloWorldApp
原因:如果收到此错误,java则找不到字节码文件HelloWorldApp.class。
错误:找不到或无法加载主类 HelloWorldApp.class
原因:这是由于尝试在由编译器java创建的.class文件上运行启动器导致的错误。
错误:在类 HelloWorldApp 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application
原因:Java VM要求您与之一起执行的类具有一个main开始执行应用程序的方法。