共计 3387 个字符,预计需要花费 9 分钟才能阅读完成。
特此声明:本文为本人公司郭总原创书籍的前言,该书还未出版,作为该书籍的初版在接下来的时间里,将免费在本人微信公众号内不间断更新与大家一起学习阅读。喜欢学习的小伙伴可以搜索微信公众号:程序员 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),更多优质资源及优质文章及时获取,请大家多多支持哦!