什么是Java?

简单归纳为四个一种:

        一种编程语言、一种开发环境、一种应用环境、一种部署环境。

        Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高 效性、平台移植性和安全性(牺牲执行效率为代价换取高安全性),广泛应用于PC、数据中心、 游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java完全面向对象的编程语言,主要用于Internet应用程序。 Java 既是一种解释执行的语言(先编译后解释执行),也是一种编译执行的语言 Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮(鲁棒性)、安全与系统无关、可移植、高性能、多线程和静态的语言(从JDK8开始引入了一些动态语言的特性)。

一次编译、到处执行】的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的性能。

        Java是一个开发环境。Java技术包含一系列的工具:编译器,解释器,文档生成工具,打包工具等。另外由Java 2 SDK提供的JRE还包括了一个完整的Java集合,如基本语言类,GUI控件类等。

        Java是一个运行环境。它可以从Oracle公司提供的Java 2 SDK中来搭建运行环境,免费。

什么是程序?

程序=算法+数据结构

Java 主要技术分支

JavaSE【J2SE】:

        Java标准版,主要用于桌面应用或者局域网应用开发 Java 语言核心类: 数据库连接, 接口定义,输入/输出和网络编程。

JavaEE【J2EE,最新名称 JakartaEE】:

        java企业版,主要用于企业级电子商务应用开发 包含JAVA SE 中所有类,并且还包含用于开发区企业级应用的类,如EJB、Servlet、JSP、XML… JavaEE【Spring框架】目前已成为开发电子商务应用的事实标准企业级的概念:跨地域性、数据来源复杂性。

JavaME[J2ME]:

        java精简版,主要用于受限环境开发 Android所替代。

Java应用场景

        Java编程语言是一种广泛应用于互联网应用的高级计算机语言,主要应用于网络编程和互联网电子商务应用,特别适合于Internet应用程序开发。

Java的三种核心机制

java编程酒 java语言编程_大数据

 Java虚拟机JVM

        JVM创造一个内部运行时系统(runtime system来执行Java代码,包括:加载.class字节码文件、管理内存、执行垃圾收集)

        Java程序并不是在本机操作系统上直接运行,而是通过Java虚拟机向本机操作系统进行解释来运行。这就是说,任何安装有Java虚拟机的计算机系统都可以运行Java程序,而不论最初开发应用程序的是何种计算机系统。

        java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。

        JDK 包含JVM和其他工具以及所有的API和相关文件。

垃圾收集机制Garbage Collection

        Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。

        不再使用内存空间回收——垃圾回收

        在C/C++等语言中,由程序员负责回收无用内存。Java语言消除了程序员回收无用内存空间的责任,它提供了一种系统级线程跟踪存储空间的分配情况,并在JVM的空闲时检查并释放哪些可被释放的存储空间。 垃圾收集在Java程序原型过程中自动运行,程序员无法精确控制和干预。

代码安全性检测Code Security

        在运行时,执行机器只是将.class类文件通过交互后使用,一般情况是看不到源代码.Java,如果想要看到.Java源程序,就要通过专用反编译工具,才能够看到。这就体现了Java在运行环境中相对其它语言来说,加强了代码的安全性 。

版本选择问题

        JDK为java开发工具,全称为Java Development Kit。除了运行和编译所需要的相关工具外,最重要的是 提供了很多预先定义好的程序,可以直接使用。

        首先JDK可以分为OpenJDK和Oracle JDK两个系列:

        OpenJDK是基于Oracle JDK源代码构建的,因此Oracle JDK和OpenJDK之间没有重大的技术 差异 Oracle JDK将更多地关注稳定性,它重视更多的企业级用户,而OpenJDK经常发布以支持其 他性能,这可能会导致不稳定。

        Oracle公司把JDK分成了两种维护情况,即非长期支持版和长期支持版LTS。对于非长期支持版 non-LTS而言,Oracle只会提供6个月的支持维护;而对于长期支持版本LTS,则提供8年的支持维护。

        JDK的官方下载地址是:https://www.oracle.com/downloads

JDK和JRE

        jdk:java开发工具箱,提供了java程序的开发工具和运行环境。

        jre:Java运行时环境,提供了java的运行环境支持。

        安装所使用的操作系统需下载对应的JDK,要注意统一使用JDK8或者JDK11。

windows下的安装

        按照JDK8安装向导一步一步的执行,在选择安装内容时其中的公共JRE可装可不装,因为JDK中自带的就有JRE,而公共JRE是脱离JDK的JRE。安装JDK8以上版本则不会安装JRE

        JDK11是模块化设计,不再包含JRE,而是按需生成,需要哪个模块,就将哪个模块打包成JRE,而不需要引入无关紧要的其他模块,可以大幅缩小JRE体积。 在bin目录下可以看到jlink.exe文件,可以使用这个工具。再打开jmods文件夹,可以看到71个以 jmod为结尾的文件,其实jmod文件就是一个压缩包,可以使用加压缩文件打开,里面包含了 class文件和其他文件。

基础命令格式:

【jlink --module-path "java模块位置" --add-modules 加入需要的模块,多个用英文逗号隔开 --output "指定生成的jre文件夹路径"】

例如 :bin\jlink --module-path jmods -- add-modules java.base,java.desktop --output jre 

        如果在使用自定义的JRE运行java程序时,出现NoClassDefFound错误,说明JRE中没有添加相关的模块。首先需要确定缺少的 class 存在于那个JDK module 中,然后在jlink 命令中添加到--add-modules列表中,重新生成JRE就可以了。

        注意:在JDK的安装路径中不要出现中文、空格之类的特殊符号。

 配置3个参数(环境变量---系统变量)

        JAVA_HOME:JDK的安装路径,例如C:\Java\jdk1.8.0_172

        CLASSPATH:其中值有3个,在Windows下使用分号进行分割。

     C:\Java\jdk1.8.0_172\lib\rt.jar

     C:\Java\jdk1.8.0_172\lib\tools.jar

        Path:注意是修改,不是创建,不要删除旧有配置,否则可能windows无法正常使用。在配置的末尾追加:C:\Java\jdk1.8.0_172\bin;

验证

在cmd上运行命令:

java -version/javac -version   查看当前jdk的版本号

Linux下的安装

编辑profile文件:

export JAVA_HOME=/usr/java/jdk1.8  //注意这里是具体的安装位置

export CLASSPATH=:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/t ools.jar

export PATH=$JAVA_HOME/bin:$PATH

保存退出后,执行:source /etc/profile 命令生效。

测试是否安装成功: Java -version