Java语言是一门优秀的编程语言,它的优点是与平台无关,可以实现“一次编写,到处运行”。Java是一门面向对象的计算机语言,它简洁高效,具有高度的可移植性。下面介绍Java的由来及前景、优良传统、技术体系及学习路线和组后的经验之谈。
1 Java前世今生
1.1 Java起源
Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采用C++,但C++比较复杂,最后经过裁剪、优化和创新,1990年,由Sun公司的James Gosling(詹姆斯·高斯林)领导的小组基于C++开发了一种与平台无关的新语言Oak(Java的前身)。Oak的取名源于Gosling办公室外有一棵枝繁叶茂的橡树,这在硅谷是一种很常见的树。
1995年1月,Oak被改名为Java,这是因为Oak是一家显卡制造商已注册的商标。Oak若想发展壮大,法律层面上的改名势在必行。Java是印度尼西亚“爪哇(注:Java的音译)”岛的英文名称,该岛因盛产咖啡而闻名。这就是Java的官方商标是一杯浓郁的咖啡的原因。Sun随后开发了HotJava浏览器,得到了Sun公司时任首席执行官Scott McNealy的支持,触发了Java进军Internet。
1.2 Java简史
从Java的第一个版本诞生到现在已经有二十余年的时间,白驹过隙,沧海桑田,转眼已过了四分之一个世纪,我们看到JDK的版本已经发展到了JDK 13。这二十多年里诞生过无数与Java相关的产品、技术与标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,再来回顾一下Java的发展轨迹和历史变迁。
1.3 Java前景展望
就目前而言,Java还在世界头号编程语言行列。然而,Java最终将会减弱。但是无意中的好处,也是Java真正意外的光彩之处在于它为自己的替代品创造了一条非常畅通的道路,即使Java本身已经达到了无法再发展的程度。未来所有的语言都应该从中学习:要么创建一个可以重构的文化(像Python和Ruby做的那样),要么就让竞争者茁壮成长。
我们从Java发展情况来看,随着Java每半年更新一次的节奏,新版本的Java中会出现越来越多其他语言里已有的优秀特性,相信博采众长的Java,还能继续保持现在的勃勃生机相当长时间。
2 Java优良传统
在各种讨论声中,有一些人认为C++是一种设计糟糕的语言。 我认为理解C++和Java语言的选择有助于了解更大的视角。
Java的设计者已经编写了颇有影响力的“白皮书”,用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要。这个摘要用下面11个关键术语进行组织:
(1)简单性 (2)面向对象 (3)网络技能(4)健壮性 (5)安全性 (6)体系结构中立(7)可移植性(8)解释型
(9)高性能 (10)多线程 (11)动态性
Java虽然更新迭代迅速,但Java一直保持着他优良的传统,这也是Java为何一直受大家喜爱的原因所在。
3 Java技术体系
我们可以把Java程序设计语言、Java虚拟机、Java类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境,在不产生歧义的地方常以JDK来代指整个Java技术体。可以把Java类库API中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。如下图所示:
4 Java学习路线
Java学习的路线在整体上需遵循:初级阶段-中级阶段-高级阶段。不建议一开始就“越级”学习,需知“欲速则不达”。在这三个阶段各自内部的知识点,没有必然的先后次序,可根据自己的实际情况“有的放矢”地学习。不管处于哪个学习阶段,都要重视Java的实战练习。
“罗马不是一日建成的(Rome was not built in a day)”,编程高手也不是一日能成就的。《荀子·劝学篇》亦有云:“骐骥一跃,不能十步;驽马十驾,功在不舍。学习Java的途中没有捷径,需要进行不断地理论学习、反复地实战练习才能将代码运用灵活,就好像练习武功一样,只有重视基本功,并持之以恒,才能让自己的动作收放自如,招式炉火纯青。
5 Java学习经验
Java是一门面向对象编程(Object-oriented programming,简称OOP)语言,在学习的过程中一定要多从面向对象的角度去考虑问题。在初级入门阶段,要以实践为主,多动手,增强自己对Java代码的感性认识。感性认识积累多了,再配合书籍学好理论,这才能有高层次的理性认知。下面给出一些低级程序设计和编写代码的建议:
- 先让它工作,然后再让它变快。即使你确定一段代码非常重要并且它是你系统中的主要瓶颈,也要先尽可能简单的设计使系统首先运行。然后如果速度不够快,请对其进行分析。
- 创建类时,给类起个清晰的名字,就算不需要注释也能理解这个类。
- 优先选择 接口 而不是 抽象类。
- 遵循编码惯例。
- 请注意,相比于编写代码,代码被阅读的机会更多。清晰的设计可能产生易于理解的程序,但注释,详细解释,测试和示例是非常宝贵的,它们可以帮助你和你的所有后继者。如果不出意外,试图从JDK文档中找出有用信息的挫败感应该可以说服你。
- 无论使用何种编码风格,如果你的团队(甚至更好是公司)对其进行标准化,它就确实会产生重大影响。这意味着,如果不符合这个标准,那么每个人都认为修复别人的编码风格是公平的游戏。标准化的价值在于解析代码可以花费较少的脑力,因此可以更专注于代码的含义。
- 从设计的角度,寻找和分离那些因不变的事物而改变的事物。
- 不要通过子类扩展基本功能。如果一个接口元素对于类来说是必不可少的,则它应该在基类中,而不是在派生期间添加。如果要在继承期间添加方法,请考虑重新设计。
- 使用继承和覆盖方法来表达行为的差异,而不是使用字段来表示状态的变化。如果发现一个类使用了状态变量,并且有一些方法是基于这些变量切换行为的,那么请重新设计它,以表示子类和覆盖方法中的行为差异。一个极端的反例是继承不同的类来表示颜色,而不是使用“颜色”字段。
- 使类尽可能原子化。 为每个类提供一个明确的目的,它为其他类提供一致的服务。如果你的类或系统设计变得过于复杂,请将复杂类分解为更简单的类。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。