初识java
总体体系结构图
JavaSE知识模块介绍
- 第一部分:计算机编程语言核心结构:
数据类型
、运算符
、流程控制
、数组
、… - 第二部分:Java面向对象核心逻辑:
类和对象
、封装
、继承
、多态
、抽象
、接口
、… - 第三部分:JavaSE核心高级应用:
异常处理
、集合
、I/O
、多线程
、网络编程
、反射机制
、… - 第四部分:Java新特性:
Lambda表达式
、函数式编程
、新Date/Time API
、接口的默认、静态和私有方法
、… - 第五部分:MySQL/JDBC核心技术:
SQL语句
、数据库连接池
、DBUtils
、事务管理
、批处理
、…
计算机语言介绍
计算机语言发展(略)
- 第一代:机器语言
- 第二代:汇编语言
- 第三代:高级语言
Java语言发展历史
- Java诞生于SUN(Stanford University Network),是Sun公司1995年推出的计算机语言
- 2009年被Oracle公司收购,所以我们现在访问Oracle官网即可https://www.oracle.com
Oracle中国站下的java网址:
https://www.oracle.com/cn/java/
- Java之父是詹姆斯高斯林
JDK介绍
JRE与JDK(重点)
-
JVM(Java Virtual Machine)
- Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM 之上。
- 现在不精读个《深入理解JAVA虚拟机》都找不到工作…
-
JDK (Java Development Kit)
- 是Java程序开发工具包,包含JRE和开发人员使用的工具。
-
JRE (Java Runtime Environment)
- 是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
-
结论
- 我们想要运行一个已有的Java程序,那么只需安装JRE 即可。
- 我们想要开发一个全新的Java程序,那么必须安装JDK,其内部包含JRE。
- 注:Java11开始JDK安装包取消独立JRE安装包。
Java技术体系平台
- JavaSE (Java Platform, Standard Edition标准版)
- 允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
- 用于桌面应用开发,是其他两个版本的基础
- JavaEE(Java Platform, Enterprise Edition企业版)
- 是为开发企业环境下的应用程序提供的一套解决方案
- 主要针对于Web应用程序开发
- JavaME(Java Platform, Micro Edition 小型版)适合嵌入式和移动设备(略)
JDK的下载和安装
- 获取方式:官网下载
网址:https://www.oracle.com/java/technologies/downloads/
可以看到最新版JDK已经是JDK18,不过建议你使用JDK8或JDK11这样的大版本
- 选择自己对应的操作系统,下载好指定安装目录一键next就行了,这里就不给出具体过程
新建一个新的系统变量JAVA_HOME和添加环境变量
- 右击我的电脑,点属性
- 点新建,输入自己的JDK路径,建议你使用JDK8、JDK11这样的大版本
- 点Path(环境变量),新建输入
%JAVA_HOME%\bin
注:配置环境变量的目的在于告知命令查找的路径,使在任何路径下都能直接使用相关命令
JDK的安装目录介绍
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。例如java、javac |
conf | 该路径下存放了JDK的相关配置文件 |
include | 该路径下存放了一些平台特定的头文件 |
jmods | 该路径下存放了JDK的各种模块 |
legal | 该路径存放了JDK各模块的授权文档 |
lib | 该路径下存放了JDK工具的一些补充JAR包 |
JAVA语言的特点
- 完全面向对象:Java语言支持封装、继承、多态,面向对象编程,让程序更好达到高内聚、低耦合的标准。
- 支持分布式:Java语言支持Internet应用的开发,在基本的Java应用变成接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
- **健壮型:**Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
- **安全:**Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
- **跨平台性:**Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
Java语言的跨平台原理
- 跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
拓展几个小问题
一、高内聚低耦合
- 高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。
- 目的是使程序模块的可重用性、移植性大大增强。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。
- 内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;
- 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
二、什么是编译型语言?什么是解释型语言?Java是哪种类型?
-
编译型语言
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。以后要再运行时,直接使用编译结果即可。
- 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
- 与特定平台相关,一般无法移植到其他平台;
- 现有的C、C++、Objective等都属于编译型语言。
-
解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。只要某一平台提供了相应的解释器即可运行该程序。
- 解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;
- 只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
- Python等属于解释型语言
-
编译型语言由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言。
而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
博客: https://www.jianshu.com/p/54e2aeca013b
三、关于java的语言类型
Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。
1.你可以说它是编译型的,因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
2.你可以说它是解释型的,因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
3.但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。
- 因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。