Java | Java 入门

Java | Java 入门

  • 一、计算机语言发展史
  • 二、初识 Java
    • 2.1 Java 帝国的诞生
      • 2.1.1 C & C++
      • 2.1.2 Java
        • (1)Java 初生
        • (2)Java 发展
    • 2.2 Java 特性和优势
    • 2.3 Java 运行机制及运行过程
      • 2.3.1 Java 两种核心机制
    • 2.4 JDK、JRE、JVM
    • 2.5 Java 开发环境搭建
      • 2.5.1 JDK 下载与安装
      • 2.5.2 EditPlus 安装
    • 2.6 HelloWorld 及简单语法规则
    • 2.7 Java 程序运行机制
      • 2.7.1 编译型语言
      • 2.7.2 解释型语言
      • 2.7.3 Java 语言
    • 2.8 IDEA 安装
      • 2.8.1 什么是 IDE
      • 2.8.2 IDEA 介绍
      • 2.8.3 IDEA 安装

一、计算机语言发展史

  • 什么是计算机语言?
    • 语言:人与人之间用于沟通的一种方式。
    • 计算机语言:人与计算机交流的方式。
  • 计算机语言发展史:
    • 第一代语言:机器语言(二进制代码)
    • 第二代语言:汇编语言(指令代替二进制)
    • 第三代语言:高级语言(分为面向过程面向对象两大类)
      • C 语言是典型的面向过程的语言。
      • C++兼具面向过程和面向对象
      • C++Java是典型的面向对象的语言。

二、初识 Java

2.1 Java 帝国的诞生

2.1.1 C & C++

  • 1972C 语言诞生
    • 优点:贴近硬件,运行极快,效率极高。
    • 缺点:指针和内存管理。
    • 应用:操作系统,编译器,数据库,网络系统等。
  • 1982C++ 语言诞生
    • 优点:面向对象。
    • 缺点:复杂难学。
    • 应用:图形领域、游戏等。

2.1.2 Java

  • 我们想要建立一个具有下列特点的新的语言:
    • 语法有点像 C
    • 没有指针
    • 没有内存管理
    • 真正的可移植性,编写一次,到处运行(JVM
    • 面向对象
    • 类型安全
    • 拥有高质量的类库

(1)Java 初生

  • 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.1JavaOne会议召开,创当时全球同类会议规模之最。
    • 1998年,发布Java 1.2版本,更名为J2SE 1.2,对应JDK 1.2Sun公司在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服务的类库,同时,J2SEJ2EEJ2ME提供了基础。J2SE就是基于JDKJRE,包含支持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 architectureSOA)和Web 3.0应用程序。BEA 公司第一个使用了J2EE许可证,推出了weblogic应用服务器,凭借着集群功能第一次展示了复杂应用的可扩展性和高可用性(程序员们的三高:高并发、高性能、高可用)。
  • 1999 年,JSP/Servlet技术诞生。

(2)Java 发展

  • 2004年,发布里程碑版本:J2SE 1.5,对应JDK 1.5,为突出此版本的重要性,更名Java SE 5.0。从Java SE 5.0开始,J2SE更名为Java SEJ2ME更名为Java MEJ2EE更名为Java EE。此时对应的JDK版本都是JDK 1.X这种形式。
  • 2006 年,发布Java SE 6,对应JDK 1.6Sun从版本号中去掉“.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,最大程度实现模块化。
  • 20178月,Oracle(甲骨文)决定将Java EE移交给开源组织,最后Eclipse基金会接手。不过,甲骨文不允许开源组织用Java的名号,于是发起投票为Java EE征集新的名字。当时社区确定的两个备选名是:“Jakarta EE” 和 “Enterprise Profile”,最后Jakarta EE64.4%的票数获胜。也就是说,Java EE已经正式更名为Jakarta EE(雅加达)。
  • 20179月,Java平台的主架构师Mark Reinhold发出提议,要求将Java的功能更新周期从之前的每两年一个新版本缩减到每六个月一个新版本。该提议获得了通过,并在提出后不久生效。
  • 20183月,发布Java SE 10,此时对应的JDK版本不再是JDK 1.10这种形式,而是变成了JDK 10这种形式。
  • 20189月,发布Java SE 11,对应JDK 11.0
  • 20193月,发布Java SE 12,对应JDK 12.0
  • ⋯ ⋯ \cdots\cdots
  • 2021914日,发布Java SE 17,对应JDK 17.0Java SE 17是切换到新的6个月发布周期以来的第二个长期支持(LTS)版本(第一个是Java SE 11)。Java SE 17, 11, 8为目前提供支持的LTS(长期支持)版本。
  • 2022322日,发布Java SE 18,,对应JDK 18.0
  • 根据开发计划,JDK 19将于今年9月发布,而下一个LTS版本JDK 21将于20239月发布。
  • 程序员基于Java开发了巨多的平台、系统、工具
    • 构建工具:AntMavenJekins
    • 应用服务器: TomcatJettyJbossWebsphereweblogic
    • Web开发:StrutsSpringSpringMVCHiberbateMyBatis
    • 开发工具:EclipseNetBeansIntelliJ IDEAJbuilder
    • ⋯ ⋯ \cdots\cdots
  • Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面:
    • 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。
    • Android平台应用Android应用程序使用Java语言编写。Android开发水平的高低很大程序上取决于Java语言核心能力是否扎实。
    • 大数据平台开发:各类框架有Hadoopsparkstormflink等,就这类技术生态圈来讲,还有各种中间件如flumekafkasqoop等等,这类框架以及工具大多数是用Java编写而成,但提供诸如JavascalaPythonR等各种语言API供编程。
    • 移动领域开发:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

2.2 Java 特性和优势

\quad JavaC语言和C++语言继承了许多成分,甚至可以将Java看成是类C语言发展和衍生的产物。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用指代)、运算符重载、多重继承(以接口取代)。增加了垃圾回收功能用于回收不再被引用的对象所占据的内存空间。

  • 简单性(简洁版 C++
  • 面向对象
    • 两个基本概念:类、对象
    • 三大特性:封装、继承、多态
  • 可移植性(跨平台性)Write once, Run anywhere
    • 解释:通过Java语言编写的应用程序在不同的系统平台上都可以运行。
    • 原理:只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(Java Virtual MachineJVM)即可。由JVM来负责Java程序在该系统中的运行。
  • 高性能
  • 分布式
  • 动态性(反射)
  • 多线程
  • 安全性
  • 健壮性
    • 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。

2.3 Java 运行机制及运行过程

2.3.1 Java 两种核心机制

  • Java虚拟机(Java Virtal Machine
    • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
    • 对于不同的平台,有不同的虚拟机,只有某平台提供了对应的Java虚拟机,Java程序才可以在此平台运行。
    • JVM屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。
      Java | Java 入门_第1张图片
  • 垃圾收集机制(Garbage Collection
    • 不再使用的内存空间应回收——垃圾回收
      • C/C++等语言中,由程序员负责回收无用内存。
      • Java语言消除了程序员回收无用内存空间的责任:它提供了一种系统级线程,跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
    • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
    • Java程序依然会发生内存泄漏和内存溢出问题。

2.4 JDK、JRE、JVM

  • JDKJava Development KitJRE 基础上扩充一些开发工具)
    • 安装了JDK,就不需要单独安装JRE了。
    • 包含了开发工具:编译工具(javac.exe)、打包工具(jar.exe)等
  • JREJava Runtime Environment(安装 JRE 即可运行 Java程序)
    • 包括JVM和运行Java程序所需的核心类库(Java SE标准库)等。
    • 只想运行Java程序,仅安装JRE即可。
  • JVMJava Virtual Machine(可以使用软件或硬件实现)
Java | Java 入门_第2张图片

2.5 Java 开发环境搭建

2.5.1 JDK 下载与安装

  • 官网 https://www.oracle.com/java/technologies/downloads/ 下载安装包
    • jdk-17.0.1安装包网盘下载 ,提取码:2iio
  • 双击安装包进行安装。
  • 配置环境变量:为了在任何文件路径下都可以使用Java开发工具。
    • 删除系统变量Path中的C:\Program Files\Common Files\Oracle\Java\javapath变量及相关文件。
      • pathwindows系统执行命令时要搜寻的路径。
    • 解决JDK 17中没有JRE
      • 使用管理员模式打开cmd
      • 进入JDK的安装目录:cd C:\Program Files\Java\jdk-17.0.1
      • 生成JREbin\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.zipJava开源的代码,常见的类库。

2.5.2 EditPlus 安装

  • Notepad++ 涉嫌反华,坚决抵制使用!!!
  • 官网 https://www.editplus.com/ 下载安装包
  • 双击安装包
  • 注册亲测可用:用户名:Vovan,密码:3AG46-JJ48E-CEACC-8E6EW-ECUAW
  • 关闭自动备份:Tools → \pmb{\rightarrow} Preferences... → \pmb{\rightarrow} Categories(Files) → \pmb{\rightarrow} 去除create backup file when saving勾选 → \pmb{\rightarrow} OK

2.6 HelloWorld 及简单语法规则

  • 随便新建一个文件夹(建议命名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文件。
    Java | Java 入门_第3张图片
  • 编译成字节码文件: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[] argsmain方法的参数,args可以换成其他名称,建议使用args,后续文章中详细讲解。
    • System.out.println表示输出,后续文章中详细讲解。
    • 每一行执行语句都以“;”结束

2.7 Java 程序运行机制

\quad 计算机不能直接理解 Java 这种高级语言,只能理解和运行机器语言,所以需要将高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种:一种是编译,另一种是解释,两种方式只是翻译的时间不同。因此,高级语言有两种类型:编译型语言解释型语言

  • 常见的编译型语言C/C++DelphiPascalFortran等。
  • 常见的解释性语言PythonJavaScript等。

\quad 随着硬件与技术的发展,当前编译型与解释型的界限已经不那么明确,由于计算机内存的增加,解释型语言运行速率也不断提升。

2.7.1 编译型语言

\quad 程序在运行之前需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言,运行时不需要重新翻译,直接使用编译的结果即可。

  • 优点:编译一次,永久执行,运行效率高,保护源代码。
  • 缺点:跨平台能力差。

2.7.2 解释型语言

\quad 解释型语言需要一个解释器,在程序运行的时候将高级语言翻译成机器语言,每个语句都是执行的时候才被翻译,这样解释型语言每执行一次就要被翻译一次。

  • 优点:跨平台性能好。
    • 缺点:运行时需要源代码,知识产权保护性差,运行效率低。

2.7.3 Java 语言

Java 这个语言很神奇:

  • 你可以说它是编译型的。因为所有的 Java 代码都是要经过编译生成 .class 文件,.java 文件不经过编译就什么用都没有。
  • 你可以说它是解释型的。因为 Java 代码经过编译生成的 .class 文件不能直接运行,.class 文件是需要解释运行在 JVM 虚拟机上的,所以 Java 又是解释运行的。
Java | Java 入门_第4张图片

2.8 IDEA 安装

2.8.1 什么是 IDE

\quad 维基百科:集成开发环境(Integrated Development Environment,简称 IDE,也称为 Integration Design EnvironmentIntegration Debugging Environment)是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些甚至可以设计图形接口。

\quad 百度百科:集成开发环境(IDEIntegrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

\quad 常用IDEJBuiderNetBeansEclipse(最初由IBM公司开发,200111月贡献给开源社区,现在由非营利软件供应商联盟Eclipse基金会管理)、MyEclipse(由Eclipse基金会的创始成员Genuitec公司开发和维护)、IntelliJ IDEAIDEAJetBrains公司的产品,在业界被公认为最好的java开发工具)。

2.8.2 IDEA 介绍

\quad IDEA 全称 IntelliJ IDEA,是 Java 编程语言开发的集成环境。IntelliJ 在业界被公认为最好的 Java 开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gitsvn 等)、JUnitCVS 整合、代码分析、 创新的 GUI 设计等方面的功能可以说是超常的。IDEAJetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持 HTMLCSSPHPMySQLPython 等。免费版只支持 JavaKotlin 等少数语言。

2.8.3 IDEA 安装

  • 官网:https://www.jetbrains.com/idea/download/#section=windows 下载安装包
  • 双击安装包,自行注册激活
  • 使用 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!");
          }
      }
      

你可能感兴趣的:(Java,java,开发语言,后端)