Java入门第一天-你需要了解的常识

64 阅读5分钟

本文已参加「新人创作礼」活动,一起开启掘金创作之路。

(一)背景

​ 20世纪90年代,单片式计算机诞生,单片式计算机系统廉价且功能强大。SUN(Stanford University NetWork)公司为了抢占市场,由高斯林领导的一个 Green 项目小组,以期望研发出一种能够在各个消费性电子产品上运行的程序架构。

注:sun公司于1982年创建,在当时是业内极少数拥有自己微处理器、电脑系统和操作系统的公司,现已被Oracle公司收购。

(二)Java的起源

​ 在当时,C++较为有优势,但其过于复杂和庞大、程序跨平台性运行不友好,Green决定在C++的基础上改造,去除了C++复杂的指针和内存管理,研发出了一种名为Oak的面向对象语言。
由于Applet技术(能在网页中运行的Java程序)的大火,使得Oak语言也火了起来,后改名为Java。

(三)Java的演变

  • 1996年JDK1.0发布,正式开始作为一门编程语言。

  • 1999年Java体系被分为三个方向

    • J2ME:应用于嵌入式设备、移动端;
    • J2SE:应用于桌面开发,Java的基础;
    • J2EE:应用于企业级开发、服务器开发应用。
  • Java API分为三大类:

    • Java Core API:Java的核心类库;
    • Java Optional API:对之前API的补充;
    • 特殊 API:特殊厂商提供的API。
  • 2004年JDK1.5发布,更名为JavaSE 5.0版本,Java发展史上的一大里程碑。

  • 2014年JavaSE 8.0发布,Lambda表达式、流式编程是其新特性,是上一个长期使用的版本,在全国范围内使用极其广泛。

  • 2018年JavaSE 11.0发布,是Java大版本周期变化后的第一个长期使用的版本。

    注:具体各版本JDK的更新特性可以看《Java核心技术 卷1》p9

(四)Java的特性

  1. 简单性:Java是在C++的基础上改造而成的,去除了C++复杂的指针和内存管理,其次这个简单也体现在“小”上。

  2. 面向对象:Java是一门面向对象语言(C++、python、C#也是)。

  3. 健壮性:吸收了C++/C的优点,底层很多代码还是C++/C的代码,Java编译器可以检测许多在其它语言中仅在运行时才能够检测出来的问题,Java采用的指针模型可以消除重写内存和损坏数据的可能性

  4. 安全性:自动回收垃圾(GC,在C和C++中程序员需要手动进行清理内存,Java中JVM提供了一种系统跟踪存储空间的分配情况,自动在JVM空闲时释放可以释放的空间)、强制类型检查、取消指针。

  5. 体系结构中立:编译器生成一个体系结构中立的目标文件格式(字节码文件)。

  6. 可移植性:一次编译,到处执行。

  7. 解释型:C语言是编译运行,编译器、编译生成的文件与平台都有关;Java是解释型,编译器和编译生成的字节码文件都与平台无关,解释器与平台有关。(C语言是编译后的跨平台,而不是源程序跨平台)


注:虚拟机有一个选项,可以将执行最频繁的字节码序列转换成机器码,这一过程被称为即时编译。

(五)JDK、JRE和JVM的关系

  • JDK(Java Development Kit):Java开发工具包,能够编写Java程序的程序员使用的软件,面向开发者,它由三部分组成:

    1. JRE(Java Runtime Environment):Java运行时环境,能够运行Java程序的用户使用的软件,面向使用者,JRE由两部分组成:
      1. JVM(Java Virtual Machine):Java虚拟机,可以看作是一个运行Java字节码的虚拟计算机系统,它屏蔽了底层运行平台的差异,实现了一次编译,到处执行;
      2. Java核心类库
    2. 开发工具:编译器javac.exe、解释器java.exe(解释器实际上在调用JVM,实现字节码文件和计算机操作系统之间的通信)、调试器……
    3. Java标准类库
  • JRE的三项主要功能

    • 加载代码:类加载器(class loader)完成;
    • 校验代码:字节码校验器(byte code verifier)完成;
    • 执行代码:运行时解释器(runtime interpreter)完成;

(六)JDK的安装

  • 上Oracle官网下载www.oracle.com/index.html
  • 选择需要的版本安装,默认安装路径即可,无脑next
  • 配置环境变量(新建JAVA_HOME实现多个JDK灵活切换)
  • cmd中java -version查看是否安装成功

(七)Eclipse的安装

(八)编写代码

  • 代码分类:结构定义语句(可以堪称定义了范围的块状代码)和功能执行语句

  • 文本编写代码:编译 javac XXX.java,然后解释 java XXX

  • IDE编写代码:
    - 创建一个新项目,然后创建一个class文件
    - 创建一个main主程序入口,编写代码(可以有文档注释、单行注释、多行注释)

package day01;

import java.io.IOException;

//编写一个自动关机程序
public class Demo1 {

	/**(文档注释)
	 * 这是程序的入口
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		//System.out.println("床前明月光");
		//System.out.println("锄禾日当午");
		
		Runtime.getRuntime().exec("shutdown -s -t 36000");
	}

}