Java是一种优秀的编程语言。它的优点是与平台无关,可以实现“一次编写,到处运行”。Java是一种面向对象的计算机语言,简洁、高效、可移植性强。本文介绍了Java的起源和前景,它的
Java是一种优秀的编程语言。它的优点是与平台无关,可以实现“一次编写,到处运行”。Java是一种面向对象的计算机语言,简洁、高效、可移植性强。本文介绍了Java的起源和前景,它的优良传统,技术体系,学习路线和组后经验。
1 Java前世1.1 Java起源Java起源于Sun公司的一个名为Green的项目,最初的目的是为家用电子消费产品开发一个分布式代码系统,使通讯和控制信息可以发送到冰箱、电视、烤面包机等家用电器上。,并且它们可以被控制和交换。起初,绿色项目的工程师们打算采用C++,但C++很复杂。最后,经过切割、优化和创新,1990年,Sun公司的詹姆斯·高斯林(James Gosling)领导的团队开发了一种新的平台无关语言OAK(前身是基于C++的Oak(Java)。橡树是以高斯林办公室外一棵茂盛的橡树命名的,这是硅谷非常常见的树。
1995年1月,Oak更名为Java,因为Oak是一家显卡厂商的注册商标。橡树要想发展壮大,在法律层面更名势在必行。爪哇是印度尼西亚“爪哇”岛的英文名,以盛产咖啡而闻名。这就是为什么Java的官方商标是一杯浓咖啡。随后Sun开发了HotJava浏览器,由时任Sun公司CEO的斯科特·麦克尼利(Scott McNealy)提供支持,引发Java进军互联网。
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开发工具包)。JDK是支持Java程序开发的最小环境,而JDK通常用来指代整个Java技术主体,在这里没有歧义。Java类库API中的Java SE API子集和Java虚拟机可以统称为JRE(Java运行时环境)。JRE是一个支持Java程序运行的标准环境。如下图所示:
4 Java学习路线
总的来说,学习Java的路线应该是:初级阶段-中级阶段-高级阶段。不建议一开始就“越级”学习,要知道“欲速则不达”。这三个阶段,知识点之间相互之间没有必然的顺序,可以根据自己的实际情况来学习。无论处于哪个学习阶段,都要注重Java的实际练习。
“罗马不是一天建成的”,一个编程高手也不是一天就能做到的。荀子《劝学》中也有一句话:“一跃不能走十步;徐的十岁的干劲,他的贡献是应有的。Java学习的路上没有捷径。需要不断的理论学习和反复的实践练习,才能让代码灵活,就像练武一样。只有重视基本功,持之以恒,动作才能轻松完整。
5 Java学习经验Java是一种面向对象的编程(OOP)语言。在学习的过程中,一定要从面向对象的角度考虑问题。在起步阶段,要以实践为主,多做增强对Java代码感性认识的工作。只有积累更多的感性知识,用书本学好理论,才能有高水平的理性认知。以下是对低级编程和代码编写的一些建议:
先让它工作,然后再让它变快
。即使你确定一段代码非常重要并且它是你系统中的主要瓶颈,也要先尽可能简单的设计使系统首先运行。然后如果速度不够快,请对其进行分析。
创建类时,给类起个清晰的名字,就算不需要注释也能理解这个类
。
优先选择
接口
而不是
抽象类
。
遵循编码惯例
。
请注意,相比于编写代码,代码被阅读的机会更多
。清晰的设计可能产生易于理解的程序,但注释,详细解释,测试和示例是非常宝贵的,它们可以帮助你和你的所有后继者。如果不出意外,试图从JDK文档中找出有用信息的挫败感应该可以说服你。
无论使用何种编码风格,如果你的团队(甚至更好是公司)对其进行标准化,它就确实会产生重大影响
。这意味着,如果不符合这个标准,那么每个人都认为修复别人的编码风格是公平的游戏。标准化的价值在于解析代码可以花费较少的脑力,因此可以更专注于代码的含义。
从设计的角度,寻找和分离那些因不变的事物而改变的事物
。
不要通过子类扩展基本功能
。如果一个接口元素对于类来说是必不可少的,则它应该在基类中,而不是在派生期间添加。如果要在继承期间添加方法,请考虑重新设计。
使用继承和覆盖方法来表达行为的差异,而不是使用字段来表示状态的变化
。如果发现一个类使用了状态变量,并且有一些方法是基于这些变量切换行为的,那么请重新设计它,以表示子类和覆盖方法中的行为差异。一个极端的反例是继承不同的类来表示颜色,而不是使用“颜色”字段。
使类尽可能原子化
。 为每个类提供一个明确的目的,它为其他类提供一致的服务。如果你的类或系统设计变得过于复杂,请将复杂类分解为更简单的类。