一、java语言诞生史
java祖师爷-高斯林:
在1991年时候,SUN公司猜想嵌入式系统将会在未来家电领域大显身手,于是SUN公司决定让詹姆斯·高斯林(James Gosling)、迈克·谢里丹(Mike Sheridan)和帕特里克·诺顿(Patrick Naughton)于1991年6月启动了“Green计划”。准备开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这样我们可以把指令发给电冰箱、 电视机等家用电器,进而实现对它们进行控制,和它们进行信息交流。
这些电子产品有一个共同的特点:计算处理能力和内存都非常有限。所以要求:语言必须非常小且能够生成非常紧凑的代码,这样才能在这样的环境中执行。
另外,由于不同的厂商选择不同的CPU,因此,要求该语言不能和特定的体系结构绑在一起,要求语言本身是中立的,也就是跨平台的,最初这个语言命名为“Green”,类似于绿色软件的意思。
开始, 准备采用C++,但C++太复杂, 安全性差, 最后基于C++开发一种新的语言Oak,Oak是一种用于网络的精巧而安全的语言, (Gosling把这种语言称为"Oak",橡树的意思,起名由来1:Gosling向窗外望去,看见一棵老橡树,于是决定叫Oak)Sun公司投标一个交互式电视项目, 但结果被SGI打败。可怜的Oak几乎无家可归, 恰巧这时Mark Ardreesen开发的Mosaic和Netscape启发了Oak项目组的成员。他们用一种全新的语言编写了一款浏览器,得到了Sun公司首席执行官Scott McNealy的支持。
在一次几位该成员组的会员在一家名为“爪蛙”咖啡的店里正在讨论给这个新的语言取什么名字时,有一个人灵机一动说:“就叫 Java 怎样”, 得到了其他人的赞赏,。
于是, Java语言就诞生了。
JAVA语言发展历程:
- 1995年5月23日,Java语言正式诞生。
- 1996年1月,第一个JDK-JDK1.0诞生。(一个小型的专注于网页的版本,可用于所有浏览器)
- 新特性及更新修改:Sun Classic VM(虚拟机)、Applet(java小应用程序)、AWT(java图形设计)
- 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。
- 1996年9月,约8.3万个网页应用了Java技术来制作。
- 1997年2月18日,JDK1.1发布。
JDK1.1新特性及更新修改:
- JAR(jar包)
- JDBC(Java DataBase Connectivity)(连接数据库)
- JavaBeans(java规范)
- RMI(远程调用)
- Inner Class(内部类)
- Reflection(反射)
1997年4月2日,JavaOne会议召开,参与者超过万人,创造当时全球同类会议规模之纪录。
1997年9月,JavaDeveloperConnection社区成员超过十万。
1998年2月,JDK1.1被下载超过2,000,000次。
1998年12月8,Java的企业平台Java EE正式发布。
1999年6月,Sun公司发布Java的三大版本:标准版(Java SE)、企业版(Java EE)、微型版(Java ME)。
2000年5月8日,JDK1.3发布。
JDK1.3 新特性及更新修改:
- 数学运算
- Timer API(时间)
- Java Sound API(声音)
- CORBA IIOP实现RMI的通信协议
- Java 2D新特性
- jar文件索引
2000年5月29日,JDK1.4发布。
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机。
2001年9月24日,Java EE 1.3发布。
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。
2004年9月30日,J2SE1.5发布,Java语言发展史上的又一里程碑事件。为了表示这个版本的重要性,Java SE 1.5正式更名为Java SE 5.0。
Java SE 5.0 新特性及更新修改:
- 自动装箱拆箱
- 泛型
- 元数据
- Introspector(内省)
- enum(枚举)
- 静态引入
- 可变长参数(Varargs)
- foreach(高级循环)
- JMM(内存模型)
- concurrent(并发包)
2006年12月,Sun公司发布了JDK1.6(也被称为Java SE 6)。一直以来,Sun公司维持着大约2年发布一次JDK新版本的习惯。
2009年4月20日,Oracle宣布将以每股9.5美元的价格收购Sun,该交易的总价值约为74亿美元。但Oracle通过收购Sun公司获得了两项软件资产:Java和Solaris。2007年11月,Java语言作为服务器端编程语言,已经取得了极大地成功;而Android平台的流行,则让Java语言获得了在客户端程序上大展拳脚的机会。
2011年7月28日,Oracle公司发布了Java SE 7,这次版本升级经过了将近5年时间。Java SE 7也是Oracle发布的第一个Java版本,引入了二进制整数、支持字符串的switch语句、多异常捕捉、自动关闭资源的try语句等新特性。
2014年3月18日,Oracle公司发布了Java SE 8,这次版本升级为Java带来了全新的Lambda表达式。除此之外,Java 8还增加了大量新特性,这些新特性使得Java变得更加强大。目前Java的版本已经更新了好几个版本,但目前市场主流还是使用的JDK8。
JDK8 新特性及更新修改: (我们经常使用的版本)
- Lambda表达式
- 函数式接口
- 方法引用和构造器调用
- Stream API
- 接口中的默认方法和静态方法
- 新时间日期API
二主要应用领域与优势
1.应用领域
java自诞生以来,随着不断的完善和发展,拥有了良好的生态,应用范围也越来越广:
- 服务器程序:Java在金融服务业的应用非常广泛,许多跨国投资银行例如:GoldmanSachs(高盛投资),Citigroup(花旗集团),Barclays(巴克莱银行)以及其他银行,都用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)
- 网站开发:很多的大型知名网站(如网易、淘宝等)就是用JAVA开发的,目前很多大型项目都是用Java开发,例如医疗救护,保险,教育,国防以及其他的不同部门网站都是以Java为基础来开发的。
- 嵌入式领域:Java在嵌入式领域发展空间很大。在这个平台上,你只需130KB就能够使用Java技术(在智能卡或者传感器上)
- 大数据技术:Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java的HBase和Accumulo以及ElasticSearchas。
2.JAVA与C\C++优劣
- c是面向过程的语言。c++和Java都是面向对象的。在c中没有类或者对象的概念。
- java运行在虚拟机上,号称与平台无关。也就是你开发的java程序无论是unix,linux还是windows都可以正常运行。但是实际上这是一个良好的愿望,实际跨平台时还会有各种各样的问题。c和c++都是直接编译成可执行文件,是否能跨平台主要看你用到的编译器特性是否有多平台支持。
- 因为c和c++是直接编译成可执行文件,所以运行效率要比java高。至于c和c++哪个更快,两种语言的拥趸已经吵了很多年。
- java因为是运行在虚拟机上,不需要考虑内存管理和垃圾回收机制。也是就你可以声明一个对象而不用考虑释放他,虚拟机帮你做这事情。而c和c++语言本身没有多少内存管理的概念,写c和c++程序如果用到指针就一定要考虑内存申请和释放。内存泄漏是c和c++最头疼的问题。
- 代码重用:java中有一个根类object,所有的类都是其子类,通过这种方式将容器和算法分离,实现一种操作作用于多种对象,提高代码重用。c++中没有总根对象,但是c++提供了另一个更强大的功能“模板”,同样高效地实现了一种操作作用于多种对象,提供了高效的代码重用方法。
- 数据结构:java内建了丰富的数据结构:列表,集合等等(很久没用java了,有些记不太清)。而c++则用“模板”同样提供了各种数据结构(容器)。
- c语言在一些比较低层,和硬件打交道的地方用得比较多。另外很多开源软件由于unix/linux开发习惯也大多采用c来开发。Java是现在最流行的开发语言,c++比起java稍稍不那么流行一些,但是功能很强大。
总结
以上只是分析了两种语言的一小部分,通过分析java与c++可以知道一个结论。语言就像一个工具,根据合适的问题选择合适工具(不可能使用钳子去炒菜一样),只用在合适的领域使用合适语言。不必纠结我要学习那种,反正到工作时发现你两种语言都要学,还要学习一些其他的语言。