C
语言是典型的面向过程的语言。C++
兼具面向过程和面向对象C++
、Java
是典型的面向对象的语言。1972
年 C
语言诞生
1982
年 C++
语言诞生
C
JVM
)1995
年的网页简单而粗糙,缺乏互动性。于是Sun
公司(Stanford university network
)创造了一种在Web
浏览器中运行的图形界面程序(Applet
),Applet
使用现代的图形用户界面与Web
用户进行交互,Applet
内嵌在HTML
代码中。从此,Java
声名鹊起。那个时候是叫做Oak
,但是这个商标被注册了,于是在1996
年的时候更改为Java
。
Java
之父James Gosling
。1996
年 - 1998
年,Java
迅速崛起,但是因为仅有图形界面的程序(Applet
)而受到诟病。
1996
年,发布Java1.0
版本,对应JDK1.0
,约8.3
万个网页应用Java
技术来制作。
JDK(Java Development Kit)
是Java
语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java
应用程序。JDK
是整个java
开发的核心,它包含了JAVA
的运行环境(JVM
+Java
系统类库)和JAVA
工具。1997
年,发布Java 1.1
版本,对应JDK 1.1
,JavaOne
会议召开,创当时全球同类会议规模之最。1998
年,发布Java 1.2
版本,更名为J2SE 1.2
,对应JDK 1.2
。Sun
公司在1998
年发表Java 1.2
版本的时候,使用了新名称Java 2 Platform
,即“Java2
平台”,该版本到J2SE 5.0
为止的版本均更名为J2SE 1.*
。
Java 2
标准版(Java 2 Platform, Standard Edition
,简称J2SE
):J2SE
用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java
应用程序。J2SE
包括用于开发Java Web
服务的类库,同时,J2SE
为J2EE
和J2ME
提供了基础。J2SE
就是基于JDK
和JRE
,包含支持Java Web
服务开发的类,并为Java
企业级开发提供基础。Java 2
移动版(Java 2 Platform, Micro Edition
,简称J2ME
):J2ME
是为机顶盒、移动电话和PDA
之类嵌入式消费电子设备提供的Java
语言平台,包括虚拟机和一系列标准化的Java API
。Java 2
企业版(Java 2 Platform, Enterprise Edition
,简称J2EE
):J2EE
能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端Java
应用程序。J2EE
是在J2SE
的基础上构建的,它提供Web
服务、组件模型、管理和通信API
,可以用来实现企业级的面向服务体系结构(service-oriented architecture
,SOA
)和Web 3.0
应用程序。BEA
公司第一个使用了J2EE
许可证,推出了weblogic
应用服务器,凭借着集群功能第一次展示了复杂应用的可扩展性和高可用性(程序员们的三高:高并发、高性能、高可用)。1999
年,JSP
/Servlet
技术诞生。2004
年,发布里程碑版本:J2SE 1.5
,对应JDK 1.5
,为突出此版本的重要性,更名为Java SE 5.0
。从Java SE 5.0
开始,J2SE
更名为Java SE
,J2ME
更名为Java ME
,J2EE
更名为Java EE
。此时对应的JDK
版本都是JDK 1.X
这种形式。2006
年,发布Java SE 6
,对应JDK 1.6
。Sun
从版本号中去掉“.0
”,而开发者内部编号仍然是1.6.0
。同时期出现了Hadoop
技术(大数据领域)。2008
年,Android
(手机端)横空出世。2009
年,Oracle
公司收购Sun
公司,交易价格74
亿美元。2011
年,发布Java SE 7
,对应JDK 1.7
。2014
年,发布Java SE 8
,对应JDK 1.8
,是继JDK5.0
以来变化最大的版本。2017
年,发布Java SE 9
,对应JDK 1.9
,最大程度实现模块化。2017
年8
月,Oracle
(甲骨文)决定将Java EE
移交给开源组织,最后Eclipse
基金会接手。不过,甲骨文不允许开源组织用Java
的名号,于是发起投票为Java EE
征集新的名字。当时社区确定的两个备选名是:“Jakarta EE
” 和 “Enterprise Profile
”,最后Jakarta EE
以64.4%
的票数获胜。也就是说,Java EE
已经正式更名为Jakarta EE
(雅加达)。2017
年9
月,Java
平台的主架构师Mark Reinhold
发出提议,要求将Java
的功能更新周期从之前的每两年一个新版本缩减到每六个月一个新版本。该提议获得了通过,并在提出后不久生效。2018
年3
月,发布Java SE 10
,此时对应的JDK
版本不再是JDK 1.10
这种形式,而是变成了JDK 10
这种形式。2018
年9
月,发布Java SE 11
,对应JDK 11.0
。2019
年3
月,发布Java SE 12
,对应JDK 12.0
。2021
年9
月14
日,发布Java SE 17
,对应JDK 17.0
。Java SE 17
是切换到新的6
个月发布周期以来的第二个长期支持(LTS
)版本(第一个是Java SE 11
)。Java SE 17
, 11
, 8
为目前提供支持的LTS
(长期支持)版本。2022
年3
月22
日,发布Java SE 18
,,对应JDK 18.0
。JDK 19
将于今年9
月发布,而下一个LTS
版本JDK 21
将于2023
年9
月发布。Java
开发了巨多的平台、系统、工具
Ant
、Maven
、Jekins
Tomcat
、Jetty
、Jboss
、Websphere
、weblogic
Web
开发:Struts
、Spring
、SpringMVC
、Hiberbate
、MyBatis
Eclipse
、NetBeans
、IntelliJ IDEA
、Jbuilder
Java
的应用领域来分,Java
语言的应用方向主要表现在以下几个方面:
Java
的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。Android
平台应用:Android
应用程序使用Java
语言编写。Android
开发水平的高低很大程序上取决于Java
语言核心能力是否扎实。Hadoop
,spark
,storm
,flink
等,就这类技术生态圈来讲,还有各种中间件如flume
,kafka
,sqoop
等等,这类框架以及工具大多数是用Java
编写而成,但提供诸如Java
,scala
,Python
,R
等各种语言API
供编程。PDA
、机顶盒、汽车通信设备等。 \quad Java
从C
语言和C++
语言继承了许多成分,甚至可以将Java
看成是类C
语言发展和衍生的产物。但同时,Java
是一个纯粹的面向对象的程序设计语言,它继承了C++
语言面向对象技术的核心。Java
舍弃了C
语言中容易引起错误的指针(以引用指代)、运算符重载、多重继承(以接口取代)。增加了垃圾回收功能用于回收不再被引用的对象所占据的内存空间。
C++
)Write once, Run anywhere
Java
语言编写的应用程序在不同的系统平台上都可以运行。Java
应用程序的操作系统上,先安装一个Java
虚拟机(Java Virtual Machine
,JVM
)即可。由JVM
来负责Java
程序在该系统中的运行。C/C++
语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。Java
虚拟机(Java Virtal Machine
)
Garbage Collection
)
C/C++
等语言中,由程序员负责回收无用内存。Java
语言消除了程序员回收无用内存空间的责任:它提供了一种系统级线程,跟踪存储空间的分配情况。并在JVM
空闲时,检查并释放那些可被释放的存储空间。Java
程序运行过程中自动进行,程序员无法精确控制和干预。Java
程序依然会发生内存泄漏和内存溢出问题。JDK
:Java Development Kit
(JRE
基础上扩充一些开发工具)
JDK
,就不需要单独安装JRE
了。javac.exe
)、打包工具(jar.exe
)等JRE
:Java Runtime Environment
(安装 JRE
即可运行 Java
程序)
JVM
和运行Java
程序所需的核心类库(Java SE
标准库)等。Java
程序,仅安装JRE
即可。JVM
:Java Virtual Machine
(可以使用软件或硬件实现)2iio
Java
开发工具。
Path
中的C:\Program Files\Common Files\Oracle\Java\javapath
变量及相关文件。
path
:windows
系统执行命令时要搜寻的路径。JDK 17
中没有JRE
:
cmd
。JDK
的安装目录:cd C:\Program Files\Java\jdk-17.0.1
。JRE
:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
。JAVA_HOME
,变量值为JDK
安装位置:C:\Program Files\Java\jdk-17.0.1
。
Tomcat
服务器默认情况下会从系统的环境变量中找到JAVA_HOME
。Path
中添加%JAVA_HOME%\bin
和%JAVA_HOME%\jre\bin
并上移到顶部。cmd
中验证:java --version
输出版本信息。classpath
环境变量不需要配置,classpath
变量的作用就是指定.class
文件所在目录,java.exe
运行工具会自动去classpath
变量指定的目录搜寻.class
文件。JDK
卸载:
Java(TM) SE Development Kit 17.0.1 (64-bit)
。JAVA_HOME
找到JDK
安装位置并删除。JAVA_HOME
。Path
中与JAVA_HOME
相关的变量。cmd
中验证:java --version
报错。JDK
目录介绍:
bin
目录:开发工具,例:jar.exe
, java.exe
, javac.exe
, javadoc.exe
等等。db
目录:Java
语言编写的数据库。include
目录:C
语言编写的一些头文件,在Java
调用C
语言时会用到的文件。jre
目录:Java
运行时环境。lib
目录:存在一些jar
包。src.zip
:Java
开源的代码,常见的类库。Vovan
,密码:3AG46-JJ48E-CEACC-8E6EW-ECUAW
Tools
→ \pmb{\rightarrow} →→→Preferences...
→ \pmb{\rightarrow} →→→Categories(Files)
→ \pmb{\rightarrow} →→→去除create backup file when saving
勾选 → \pmb{\rightarrow} →→→OK
code
),存放代码Java
文件(创建文件,后缀名修改为.java
即可。建议命名HelloWorld.java
)
Java
程序public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
cmd
,进入到HelloWorld.java
文件所在目录,编译运行HelloWorld.java
文件。javac HelloWorld.java
cmd
不报错,HelloWorld.java
文件所在目录中生成HelloWorld.class
文件。.class
文件:java HelloWorld
(不用写后缀名,java
指令会自动识别)
cmd
不报错,输出Hello world!
Java
是大小写敏感的编程语言。class
修饰的单词)必须保持一致,并且首字母大写。public class
表示一个类,HelloWorld
表示类名。
Java
源文件中可以声明多个class
类,但是只能最多有一个类声明为public
的。public
的类的类名必须与源文件名相同。class
类,编译后会生成多个字节码文件(.class
文件),文件名与class
类名相同。public static void
表示一些修饰符,后续文章中详细讲解。main
方法是Java
中的主方法,即程序的入口。程序必须通过main
方法运行,即运行包含main
方法的.class
文件。String[] args
是main
方法的参数,args
可以换成其他名称,建议使用args
,后续文章中详细讲解。System.out.println
表示输出,后续文章中详细讲解。;
”结束。 \quad 计算机不能直接理解 Java
这种高级语言,只能理解和运行机器语言,所以需要将高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种:一种是编译,另一种是解释,两种方式只是翻译的时间不同。因此,高级语言有两种类型:编译型语言和解释型语言。
C/C++
、Delphi
、Pascal
、Fortran
等。Python
、JavaScript
等。\quad 随着硬件与技术的发展,当前编译型与解释型的界限已经不那么明确,由于计算机内存的增加,解释型语言运行速率也不断提升。
\quad 程序在运行之前需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言,运行时不需要重新翻译,直接使用编译的结果即可。
\quad 解释型语言需要一个解释器,在程序运行的时候将高级语言翻译成机器语言,每个语句都是执行的时候才被翻译,这样解释型语言每执行一次就要被翻译一次。
Java
这个语言很神奇:
Java
代码都是要经过编译生成 .class
文件,.java
文件不经过编译就什么用都没有。Java
代码经过编译生成的 .class
文件不能直接运行,.class
文件是需要解释运行在 JVM
虚拟机上的,所以 Java
又是解释运行的。 \quad 维基百科:集成开发环境(Integrated Development Environment
,简称 IDE
,也称为 Integration Design Environment
、Integration Debugging Environment
)是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些甚至可以设计图形接口。
\quad 百度百科:集成开发环境(IDE
,Integrated Development Environment
)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
\quad 常用IDE
:JBuider
、NetBeans
、Eclipse
(最初由IBM
公司开发,2001
年11
月贡献给开源社区,现在由非营利软件供应商联盟Eclipse
基金会管理)、MyEclipse
(由Eclipse
基金会的创始成员Genuitec
公司开发和维护)、IntelliJ IDEA
(IDEA
是JetBrains
公司的产品,在业界被公认为最好的java
开发工具)。
\quad IDEA
全称 IntelliJ IDEA
,是 Java
编程语言开发的集成环境。IntelliJ
在业界被公认为最好的 Java
开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE
支持、各类版本工具(git
、svn
等)、JUnit
、CVS
整合、代码分析、 创新的 GUI
设计等方面的功能可以说是超常的。IDEA
是 JetBrains
公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持 HTML
、CSS
、PHP
、MySQL
、Python
等。免费版只支持 Java
、Kotlin
等少数语言。
IDEA
编写 HelloWorld
程序
New Project
→ \pmb{\rightarrow} →→→ Project SDK
(选择已经安装的 jdk
) → \pmb{\rightarrow} →→→ Next
→ \pmb{\rightarrow} →→→ 勾选 Create project from template
→ \pmb{\rightarrow} →→→ Next
→ \pmb{\rightarrow} →→→ 命名项目(HelloWorld
)、选择项目保存位置、设置包名(Hello
) → \pmb{\rightarrow} →→→ Finish
package HelloWorld;
public class Main {
public static void main(String[] args) {
// write your code here
}
}
package HelloWorld;
public class Main {
public static void main(String[] args) {
// write your code here
System.out.println("Hello world!");
}
}