day01Java概述
第一天,主要学习:
1.Java语言的诞生,发展,语言特性(尤其跨平台特性)
2. Java程序的运行原理
3. 环境变量的配置等知识,还有一些常见的概念等
学习Java语言的层次
Java语言概述
- JAVA语言的诞生及发展
Java语言的诞生具有一定的戏剧性,它并不是经过精心的策划、制作,最后产生的划时代产品,从某种角度来看,java语言的诞生完全是一种误会。这又是怎么说呢?
1990年年末,Sun公司预料嵌入式系统将在未来家用电器领域大显身手。于是Sun公司成立了一个由James Gosling领导的“Green计划 ”,准备为下一代智能家电(电视机、微波炉、电话)编写一个通用控制系统。
该团队最初考虑使用C++语言,但是很多成员包括Sun的首席科学家Bill Joy,发现C++和可用的API在某些方面存在很大的问题。而且工作小组使用的是嵌入式平台,可用的系统资源极其有限。并且很多成员都发现C++太复杂,以致很多开发者经常错误使用。而且C++缺少垃圾回收系统、可移植性、分布式和多线程等功能。
根据可用的资金,Bill Joy 决定开发一种新语言,他提议在C++的基础上,开发一种面向对象的环境。于是,Gosling试图通过修改和扩展C++的功能来满足这个要求,但是后来他放弃了。他决定创造一种全新的语言:Oak.(他们都具有不将就的精神、在开发某一项科技的时候得具有资金的支持以及各种创新精神)
到了1992年的夏天,Green计划已经完成了新平台的部分功能,包括Green操作系统。Oak的程序设计语言、类库等。同年11月,Green计划被转化成“FirstPerson有限公司”,一个Sun公司的全资子公司。
FirstPerson团队致力于创建一种高度互动的设备。当时代华纳公司发布了一个关于电视机顶盒的征求提议书时,FirstPerson团队改变了他们的目标,作为对征求提议书的响应,提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多的控制权,因此FirstPerson的投标败给了SGI。同时,3DO公司另外一笔关于机顶盒的交易没有成功。此时,可怜的Green项目几乎接近夭折,甚至Green项目的一半成员也被调到了其他的项目组。
正如中国古代的寓言所言:塞翁失马,焉知非福?如果Green项目在机顶盒平台投标成功,也许就不会诞生Java这门伟大的语言了。
1994年夏天,互联网和浏览器的出现不仅给广大互联网的用户带来了福音,也给Oak语言带来了新的生机。Gosling立即意识到,这是一个机会,于是对Oak进行了小规模的改造,到了1994年秋,小组中的Naughton和Jonathan Payne完成了第一个Java语言的网页浏览器:WebRunner.Sun公司实验室主任Bert Sutherland 和技术总监Eric Schmict 观看了该浏览器的演示,对该浏览器的效果给予了高度评价。当时的Oak这个商品已经被注册,于是只得将Oak更名为Java.
Sun公司在1995年年初发布了Java语言,Sun公司直接把Java放到互联网上,免费给大家使用,甚至连源代码也不保密,也放到互联网上向所有人公开。
几个月后,让所有人都吃惊的事情发生了:Java成了互联网上最热门的宝贝。竟然有10万多人次访问了Sun公司的网页,下载了Java语言。然后,互联网上立即就有了数不清的Java小程序(也就Applet),演示着各种小动画、小游戏等。
Java 语言终于眼眉吐气了 ,成为了一种广为人知的编程语言。
在Java语言出现之前,互联网的网页实质上就像一张纸,不会有任何动态的内容。有了Java语言之后,浏览器的功能被扩大了,Java程序可以直接在浏览器里运行,可以直接与远程服务器交互:用Java语言编程,可以在互联网上像传送电子邮件一样方便地传送程序文件!
1995年,Sun虽然推出了Java,但这只是一种语言,如果想开发复杂的应用程序,必须要有一个强大的开发类库。因此,Sun在1996年年初 发布了JDK1.0.这个版本包括两部分:运行环境(即JRE)和开发环境(即JDK).运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机(JVM)5个部分;开发环境包括编译Java程序的编译器(即Javac命令)。
接着,Sun在1997年2月18日发布了JDK1.1。JDK1.1增加了JIT(即时编译)编译器。JIT和传统的编译器不同,传统的编译器是编译一条,运行完成后将其扔掉;而JIT会将经常用到的指令保存在内存中,当下调用时就不需要重新编译了,通过这种方式让JDK在效率上有了较大提升。
但一直以来,Java主要的应用就是网页上的Applet以及一些移动设备。到了1996年年底,Flash面世了,这是一种更加简单的动画设计软件:使用Flash几乎无须任何编程语言知识,就可以做出丰富多彩的动画。随后Flash增加了ActionScript编程脚本,Flash逐渐蚕食了Java在网页上有了较大提升。
从1995年Java诞生到1998年年底,Java语言虽然成为了互联网上广泛使用的编程语言,但它并没有找到一个准确的定位,也没有找到它必须存在的理由:Java语言可以编写Applet,而Flash一样可以做到,而且更快,开发成本更低。
直到1998年12月,Sun发布了Java历史上最重要的JDK版本:JDK1.2,伴随着JDK1.2一同发布的还有JSP/Servlet、EJB等规范,并将Java分成J2EE、J2SE和J2ME三个版本。
J2ME:主要用于控制移动设备和信息家电等有限存储的设备。
J2SE:整个Java技术的核心和基础,它是J2ME、J2EE编程的基础,
J2EE:Java技术中应用最广泛的部分,J2EE提供了企业应用开发相关的完整解决方案。这标志着Java已经吹响了向企业、桌面和移动三个领域进军的号角,标志着Java已经进入Java2时代,这个时期也是Java飞速发展的时期。
在Java2中,Java发生了很多革命性的变化,而这些革命性的变化一直沿用到现在,对于Java的发展形成了深远的影响。知道今天还经常看到J2EE、J2ME等名称。
不仅如此,JDK1.2还把它的API分成了三类。
核心API:由Sun公司制定的基本的API,所有的Java平台都应该提供。这就是平常所说的Java核心类库。
可选API:这是Sun为JDK提供的扩充API,这些API因平台的不同而不同。
特殊API:用于满足特殊要求的API。如用于JCA和JCE等第三方加密类库。
2002年,Sun发布了JDK历史上最成熟的版本:JDK1.4成为发展最快的一个JDK版本。JDK1.4已经可以使用Java实现大多数的应用了。
在此期间,Java语言在企业应用领域大放异彩,涌现出大量基于java语言的开源框架 :Struts、WebWork、Hibernate、Spring等;大量企业应用服务器也开始涌现:WebLogic、WebSphere、JBoss等,这些都标志着Java语言进入了飞速发展时期。
2004年10月,Sun发布了万众期待的JDK1.5,同时,Sun将JDK1.5改名为Java SE5.0,J2EE、J2ME也相应地改名为Java EE和Java ME。JDK1.5增加了诸如泛型、增强的for语句、可变数量的形参、注释、自动拆箱和装箱等功能;同时,也发布了新的企业级平台规范,如通过注释等新特性来简化EJB的复杂性,并推出了自己的MVC框架规范:JSF,JSF规范类似于ASP.NET的服务器端控件,通过它可以快速地构建复杂的JSP界面。
2006年12月,Sun公司发布了JDK1.6(也被称为Java EE 6)。一直以来,Sun公司维持着大约2年发布一次JDK新版本的习惯。
但在2009年4月20日,Oracle宣布将收购Sun公司。Sun倒下了,不过Java的大旗依然猎猎作响。2011年7月28日,Oracle公司终于"如约" 发布了 Java SE 7——这次版本的升级经过了将近5年时间。Java SE 7也是Oracle发布的第一个Java版本,引入了二进制整数、支持字符串的switch语句、棱形语法、多异常捕抓、自动关闭资源的try语言等新特性。
2014年3月18日,Oracle公司发不了Java SE8,这次版本升级为Java带来了全新的Lambda表达式、流式编程等大量新特性,这些新特性使得Java变得更加强大。
2017年9月22日,Oracle公司发布了Java SE 9,这次版本升级强化了Java的模块化系统,让庞大的Java语言更轻量化,而且采用了更高效、更智能的GI 垃圾回收器,并在核心类库上进行了大量更新,可以进一步简化编程;但对语法本身更新并不多(毕竟Java语言已经足够成熟)
————————————————
版权声明:本文为CSDN博主「Jessica-小波」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wxb141001yxx/article/details/80786680
JAVA语言的发展:
JDK 1.0 (January 23, 1996)
JDK 1.1 (February 19, 1997)
J2SE 1.2 (December 8, 1998)
J2SE 1.3 (May 8, 2000)
J2SE 1.4 (February 6, 2002)
J2SE 5.0 (September 30, 2004)
Java SE 6 (December 11, 2006)
Java SE 7 (July 28, 2011)
Java SE 8 (March 18, 2014)
Java SE 9 (September 22, 2017 )
Java SE 10(March 22, 2018)
- JAVA语言的平台版本
JAVA语言的发展:
JAVASE(Java Platform Standard Edition)标准版。
是为开发普通桌面和商务应用程序提供的解决方案
JAVAME(Java Platform To Micro Edition)小型版
是为开发电子消费产品和嵌入式设备提供的解决方案
JAVAEE(Java Platform To Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的一套解决方案
JavaEE
- JAVA语言的特点
跨平台 —— compile once,run anywhere
面向对象 解释型
健壮 动态
分布式 高效
多线程 结构中立(字节码)
开源
什么是跨平台性?
通过Java语言编写的应用程序在不同的系统 平台上都可以运行。
跨平台的实现原理
Java程序是在Java虚拟机上运行,而非直接运行于操作系统
所以,Java语言具有跨平台性,而JVM(Java虚拟机)不可以跨平台。
JAVA语言是跨平台的,它通过不同平台上的JVM虚拟机来实现。JVM无法跨平台,Windows和苹果及Linux的JVM是不同的,但将Windows的JVM移植到苹果或Linux时均无法运行。
- JDK与JRE
- JRE(JAVA Runtime Environment)
包括Java虚拟机,运行时核心类库(rt.jar),JRE主要是给已经写好的Java程序使用,换句话说Java程序要能在操作系统中运行,必须有JRE
-
- JDK(JAVA Develop kit)
首先,JDK包含JRE,除此之外,JDK中还包含一些,供开发者使用的工具比如Javac,Javap等,仅仅只供开发者在开发阶段使用的工具。
- JDK的下载和安装
建议JDK安装路径中不要有中文,同时当提示安装JRE时,可以选择不安装,因为JDK包含JRE。
- JAVA程序运行原理
- Path和Classpath环境变量
环境变量的配置
- path环境变量
告诉操作系统到哪里去找javac可执行程序
配置
- classpath环境变量
给jvm用,告诉jvm到哪里加载字节码文件
配置
- HelloWorld程序
开发Java程序,可以使用的工具很多:
notepad(微软操作系统自带)
Notepad++
Eclipse
MyEclipse
IDEA(Community Ultimate)
使用以上随便一种工具,都可以开发Java程序
使用官方推荐的环境配置方法:
1.先配置JAVA_HOME环境变量(例:c:\develop\software\jdk1.8)
2.配置path环境变量:%JAVA_HOME%\bin
当改变jdk的存储路径时(比如从c盘移动到d盘)也需要修改JAVA_HOME变量。
这种环境配置方式的优点在哪里(除了方便在路径过长时使用)?
JAVA_HOME是我们自己定义的环境变量,一旦设置或修改错误,受影响的只是我们自己,但是path环境变量,是操作系统中定义和使用的,一旦我们稍有不慎,修改错误,影响的除了我们自己,还可能影响其他的程序设置的环境变量,而且,很多Java软件,默认也会读取JAVA_HOME环境变量,根据JAVA_HOME环境变量,找到jre运行java程序