Java帝国的诞生1995
1972年C诞生
- 贴近硬件,运行极快,效率极高
- 操作系统,编译器,数据库,网络系统等
- 指针和内存管理
1982年C++诞生
- 面向对象
- 兼容C
- 图形领域、游戏
反抗 要建立一个新的语言:C+±- oak java
- 语法有点像C
- 没有指针
- 没有内存管理
- 真正的可移植性,编写一次,到处运行
- 面向对象
- 类型安全
- 高质量的类库
为了实现真正的跨平台,在每个操作系统之上都增加了抽象层,叫做Java的虚拟机,叫做JVM。
Java初生
- 1995年的网页简单而粗糙,缺乏互动性。
- 图形界面的程序(Applet)
- Bill Gates说:这是迄今为止设计的最好的语言! 微软 后来.NET
- Java 2标准版(J2SE):去占领桌面(需要安装虚拟机)
- Java 2移动版 (J2ME):去占领手机(需要安装虚拟机)
- Java 2企业版 (J2EE):去占领服务器
Java发展
他们基于Java开发了巨多的平台,系统,工具:
- 构建工具:Ant,Maven,Jekins
- 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
- Web开发:Struts,Spring,Hibernate,myBatis
- 开发工具:Eclipse,Netbean,intellij idea,Jbuilder
- …
2006:Hadoop(大数据领域)
2008:Android(手机端)
一个伟大的帝国诞生
Java特征和优势
- 简单性(C++语法的纯净版,无头文件,无指针运算,不用分配内存,语法基于C)
- 面向对象(程序设计技术,重点放在对象以及对象之间的接口上,他模拟的是人的思维去写程序,所以人去学习非常的快)
- 可移植性(不管哪种操作系统,都可以跨平台,写一次到处运行)
- 高性能(效率接近C++)
- 分布式(为网络分布式环境所设计的,可以处理很多TCP/IP协议上的东西,Java中通过URL访问网络上的一些资源,就像在本地打开我的电脑一样)
- 动态性(Java中的反射机制让Java具有了动态性)
- 多线程(可以带来更好的交互行为和实时行为,同时看视频和听英语)
- 安全性
- 健壮性(每次运行会对内存检测,不会导致程序崩溃)
JAVA三大版本(目前偏向服务器方面的开发)
- Write Once、 Run Anywhere(Java上有虚拟机JVM,虚构的计算机可以跑到所有平台上)
- JavaSE:标准版(桌面程序,控制台开发…)
- JavaME: 嵌入式开发(手机、小家电…)目前已经没人用了
- JavaEE:E企业级开发(Web端,服务器开发)
先学JavaSE,再学JavaEE
JDK JRE JVM
JDK: Java Development Kit
JRE: Java Runtime Environment
JVM: JAVA Virtual Machine
JDK包含JRE,如果只运行,用JRE就可以,想要开发需要用JDK,JVM当作一种规范,可以用软件实现也可以用硬件实现,就相当于在所有操作系统上模拟了一下小小的CPU去处理Java相关的东西
Java两种编译类型:解释型和编译型
搭建开发环境
卸载JDK
- 删除Java的安装目录
- 删除JAVA_HOME
- 删除path下关于Java的目录
- java -version
JDK下载与安装
-
百度搜索JDK8
-
同意协议
-
下载电脑对应的版本
-
双击安装JDK
-
记住安装的路径
-
配置环境变量
- 我的电脑->右键>属性
- 环境变量->JAVA_HOME
- 配置path变量
-
测试JDK是否安装成功
- 打开cmd
- java -version
HelloWorld
-
随便新建一个文件夹,存放代码
-
新建一个Java文件
- 文件后缀名为.java
- Hello.java
- 【注意点】系统可能没有显示文件后缀名,我们需要手动打开
-
编写代码
外边是类 里边是方法
public class Hello{ 修饰符 类 名字 public static void main(String[] args){ 前三是修饰符 方法 参数 System.out.print("Hello,World!"); 输出Hello world } }
-
编译javac java文件,会生成一个class文件
-
运行class文件,java class文件(不用写后缀)
可能会遇到的问题
- 每个单词的大小不能出现问题,Java是大小写敏感的
- 尽量使用英文;
- 文件名和类名必须保证一致,并且首字母大写
- 符号使用的了中文
JAVA程序运行机制
计算机高级语言类型分为编译型和解释型两种
java既有编译型的特点,又有解释型的特点。编译和解释都有翻译的意思,唯一的区别是时机不同
-
编译型 类似于把中文书直接翻译成英文版进行出售,在程序里的感受是有一个负责翻译的程序,将我们自己写的源代码转换成计算机可以执行的代码。 翻译成一本书 对操作系统要求比较低,操作系统的开发、C、C++、…
-
解释型 我说一句话你解释一句,我要执行什么你就给我去读什么,它的性能可能有点损失,用一下编译一下,要回头看一个东西,又要重新翻译一遍,这些是比较麻烦的 翻译官 比如网页、服务器的脚本对速度要求不高 JAVA 、JS、Python
-
程序运行机制
源代码在真正执行前经历了一次预编译,生成的代码是介于机器码和java源代码之间的一个程序,运行的时候是走到之前的JVM虚拟机,把class文件放到虚拟机的类装载器里边,这样类被加载到了类装载器里,接下来通过字节码校验器来判断代码是否出错,如果写的是对的经过解释器来解释给操作系统,最后程序就运行起来了。