Java语言十五讲(前言)

特此声明:本文为本人公司郭总原创书籍的前言,该书还未出版,作为该书籍的初版在接下来的时间里,将免费在本人微信公众号内不间断更新与大家一起学习阅读。喜欢学习的小伙伴可以搜索微信公众号:程序员Hotel 或者在文末处微信扫描二维码识别关注

前言

每年技术媒体都会评选最受欢迎的编程语言,Java总是高居前位。自然,没有办法说一个语言绝对比另一种语言好,这个话题一如既往地会引起大家无谓的争论不休。对别的行业的人来讲也许会觉得莫名其妙,但是对我们程序员来讲,捍卫某种语言是一件很动感情的事情。就跟捍卫自己的母校一样,只能自己说不好,别人不能说不好的。

Java从正式出生以来(1995.05.23),已经过了24年时间了,它现在仍在全世界广泛被使用,拥有大量程序员和工作机会,这一个事实毫无疑义地证明了Java的成功。

但是,大家切记的是,讨论Java,不能当它只是一门编程语言,它还是一个平台,同时是一个生态。我二十多年前在Sun公司技术研发中心的时候,一个工作任务之一就是告诉大家Java不仅仅是一门语言。我们的技术总监曾经说,如果一定要认为Java是一门语言,可以说“Java是服务端的语言”。我把这个历史说出来,就是让大家在学习语言的时候记住Java有其更加广泛的空间。

不过,本系列讲座又确实主要从语言本身的层面介绍Java。针对的对象是初步了解Java语言的程序员,如本专业的大学毕业生或者是从事编程工作一年时间的程序员们。希望对Java语言有一个进阶的理解。

就跟世界上任何自然语言一样,人为发明约定的编程语言也是不断与时皆进的。从一个婴儿慢慢长大成人。

我本人曾经身在Sun Java团队之中,虽然没有为Java发展做出什么贡献,没有开辟新大陆,就像是一个跟随哥伦布船队的小船员,也是见证了一段历史。但是对新大陆热爱的心却一直在澎拜。希望这个系列讲座为Java布道,对后来的年轻人能有所帮助。

我们来看看Java的成长历史。

Java前传

1990年,Sun公司启动“Green计划”,旨在开发智能家电的嵌入式控制系统。

1991年,Green项目组发现家用设备太多样化,C++移植过于繁琐,无法统一编程,Gosling决定开发一种新的可移植语言,开头想叫C-,后来命名为“Oak”。名字来自于办公室窗口的一棵树。

1994年,Gosling将Oak更名为Java,名字来自于工作间隙Gosling去饮水机冲咖啡时候的一闪念。接着团队完成JVM实现,完成第一个Java编译器,完成Java实现的浏览器WebRunner(后来的HotJava)。这个团队总共三个人。

这就是创世时刻的样子。

Java发布史

1995年5月23日,Sun公司正式发布Java语言,这一天是JAVA的生日。

1996年,JDK1.0发布,这是重要里程碑,标志着它成为一种独立的开发工具。在1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,这成为历史上传统的经典盛会。

1998年12月,第二代Java平台的企业版J2EE发布。

1999年6月,Java2被分成三个版本:J2SE(标准版)、J2EE(企业版)、J2ME(微型版),有一个重要的里程碑,标志着Java的应用开始普及。

2001年9月24日,J2EE1.3发布。

2002年2月,J2SE1.4发布,各种开源框架大量出现。

2004年9月30日18:00PM,J2SE1.5发布,成为java语言发展史上的又一里程碑。

2005年6月,Java SE 6.0发布,三个版本分别改为:JavaSE, JavaEE,, JavaME。

2009年4月20日,Oracle以74亿美元收购Sun公司,并取得了Java的版权。

2011年7月,JavaSE7发布。

2014年3月,JavaSE8发布。

Java特性演化史

1996年,JDK 1.0主要包括的特性:Applet、AWT等。在网页上动态变换的小动画震惊了整个Internet技术圈。

1997年,JDK 1.1,引入了一些后来常用的技术点,如:JAR文件格式、JDBC、JavaBeans、RMI,Inner Class和Reflection。

1998年12月4日,史诗巨献的JDK 1.2发布,包含的主要技术,如EJB、Java Plug-in、Java IDL、Swing等以及后来常用的Collections集合类。

2000年中,JDK 1.3发布,主要改进和引入了一些类库上,如数学运算和新的Timer API,JNDI服务,CORBA IIOP,Java 2D。

2002年,JDK 1.4发布,标志着Java的成熟,引入了一些新技术特性,如正则表达式、NIO、日志类、XML解析器等。

2004年,JDK 1.5发布,改进包括了自动装箱、泛型、动态注解、枚举、可变长参数、foreach循环,还提供了java.util.concurrent并发包等。

2006年12月11日,JDK 1.6发布,并改用Java SE 6、Java EE 6、Java ME 6的命名方式。重大的改进包括动态语言支持、提供编译API等。虚拟机层面,包括锁与同步、垃圾收集、类加载等方面的算法都有很多改动。

后来,由于经济危机和收购案,Java发展遇到诸多挫折,Java7难产。

2011年Oracle发布的Java7采用了B计划,没有按照原先的设计推出。重要的改进包含:动态类型语言在 JVM 上的执行效率得到大幅提升,G1 垃圾回收器性能, 主要用于 Server 端,核心类库改进: ClassLoader, URLClassLoader, Concurrent, i18n

2014年,发布Java8,主要的改进终于引入了Lambda表达式。

历史评价

Java是一个划时代的跨平台产品,这个最基础最根本的设计初衷已经完全达到;

Java衍生出来的框架及其生态是世界上最成功的技术平台之一,这一点超出了设计初衷;

Java最功败垂成的设计是EJB,这是Java企业版本中最重大最着力的技术革新,由于设计和实现的复杂,推广困难,被悉尼大学的Rod Johnson这个音乐学博士单枪匹马挑下马,最后完败于轻量级框架。

Java是Sun公司及James Gosling对人类的伟大贡献,而没有获取到什么利益。

本系列讲座,我打算讲十五个主题:

主题 1 - Generic Programming

1.1 Generic Class

1.2 Generc Methods

1.3 Bounds & Wildcard Types

1.4 Ceneric Code & VM

1.5 Reflection and Generics

主题 2 - Reflection

主题 3 - Proxy

主题 4 - ClassLoader

主题 5 - Inner Class

主题 6 - Event

6.1 Event Object

6.2 Actions

6.3 Event Handling

主题 7 - Exception

7.1 Exception

7.2 Assertion

7.3 Logging

7.4 Debugging

主题 8 - RE

主题 9 - Multi-Thread

9.1 Threads

9.2 Synchornization

9.3 Thread-Safe Collections

9.4 Executors

主题 10 - Collections

10.1 Interfaces

10.2 Collections

10.3 Framwork

10.4 Algorithms

主题 11 - IO

11.1 Streams

11.2 Text

11.3 Binary Data

11.4 Files

主题 12 - Network

12.1 Sockets

12.2 Implementing Servers

12.3 Web

12.4 E-Mail

主题 13 - Enum

主题 14 - Annotation

主题 15 - Script

编程,不仅仅是学,还是做,说到底是一个手工艺活儿。曾经有好些入门的年轻人问我如何编得一手好程序?我的回答总是“无他无他,惟手熟尔。”要想提高编程水平,唯一的方法就是动手去编。只要结合“眼”“脑””手”三者,不断学,不断想,不断做,就能大有成效。坚持两三年,迈上一个崭新的台阶,到了那时,定会体会到“虽人不我知,而胸中自有沟壑”的美妙境界。

荀子云:学不可以已。

原创书籍目录传送门:《Java十五讲》

微信扫描下方二维码(微信公众号:程序员Hotel), 更多优质资源及优质文章及时获取,请大家多多支持哦!

Java语言十五讲(前言)

相关推荐