Java:新世纪时代的召唤--启航
Java:新世纪时代的召唤--小白成长历程
- C语言时代
- 一次反抗:
- 一鸣惊人
- 开拓疆土
- 帝国的诞生
- Java的特性和优势
- 简单性
- 面向对象
- 可移植性(跨平台性)
- 高性能
- 分布式
- 动态性
- 多线程
- 安全性
- 健壮性
- 一些感悟
- 硅谷前身
C语言时代
现在是公元1995年, C语言帝国已经统治了我们20多年, 实在是太久了。
1972年, 随着C语言的诞生和Unix的问世, 帝国迅速建立统治, 从北美到欧洲, 从欧洲到亚洲, 无数 程序员臣服在他的脚下。
帝国给我们提供了极好的福利:贴近硬件, 运行极快, 效率极高。 使用这些福利, 程序员们用C 开发了很多系统级软件,操作系统, 编译器, 数据库,网络系统…
但是帝国也给我们安上了两个沉重的枷锁: 指针和内存管理 虽然指针无比强大, 能直接操作内存, 但是帝国却没有给我们工具去做越界的检查, 导致很多新手程 序员轻易犯错。
至于内存管理, 帝国更完全是放任的态度: 你自己分配的空间, 自己去释放 !
更要命的是这些问题在编译期发现不了, 在运行时才会突然暴露, 常常让我们手忙脚乱, 昏天黑地去 调试。
我们的大量时间和宝贵的精力都被浪费在小心翼翼的处理指针和内存分配上。 每个程序员都被这两个东西搞的焦头烂额!
帝国宣称的可移植性骗了我们,他宣称我们在一个机器上写的程序, 只要在另外一个机器上编译就可以 了, 实际上不是这样。 他要求我们尽量用标准的C函数库。
其次,如果遇到了一些针对特定平台的调用, 需要对每个平台都得写一份 ! 有一点点小错误,都会导致编译失败。
1982年,帝国又推出了一门新的语言C++, 添加了面向对象的功能,兼容C, 有静态类型检查, 性能也很好。
但是这门新的语言实在是太复杂了, 复杂到很多聪明的人都没有办法完全掌握这门语言,它的很多特性复杂的让人吃惊。 C++在图形领域和游戏上取得了一些成功, 但是需要有突破常人的坚持与毅力,还要加上一些天赋。
一次反抗:
故事从决定反抗这个庞大的帝国开始,他偷偷的带领着一帮志同道合的兄弟离开了,他们要新建一块清新自由的领地。 为了吸引更多的程序员加入, 他们要建立一个新的语言,这个语言应该有这样的特性: 语法有点像C ,这样大家容易接受没有C语言那样的指针再也不要考虑内存管理了, 实在受不了了真正的可移植性, 编写一次,到处运行,面向对象类型安全,还有就是想要要提供一套高质量的类库。
随语言发行,他们想要把这个语言命名为C+±- , 即C++减减, 因为想在C++的基础上改进,把它简化。 后来发现不行, 设计理念差别太大。 干脆重启炉灶。 他们看到门口的一棵橡树, 就把这个语言叫做Oak。 但是后来发布的时候, 发现Oak已经被别人用了, 团队讨论很久, 最终决定把这门新的语言叫做 Java。 为了实现跨平台, 在操作系统和应用程序之间增加了一个抽象层: Java 虚拟机用Java写的程序都跑在虚拟机上,除非个别情况,都不用看到操作系统。
一鸣惊人
为了吸引更多的人加入我们的新领地,团队决定搞一个演示, 向大家展示Java 的能力。 出世未久的Java其实还远不完善。 搞点什么好呢? 我们把眼光盯上了刚刚兴起的互联网, 1995年的网页简单而粗糙, 缺乏互动性。 于是他们在浏览器上 弄了个小插件, 把java 运行环境放了上去。 然后在上面开发了一个图形界面的程序(Applet), 让它看起来美轮美奂, 震撼人心。 每一个看到他的程序员都会发出“Wow”的惊叹 !为之倾倒。 Java 活了! 通过Applet , 无数的程序员看到了Java这门语言,了解了这门语言特性以后, 很多无法忍受C帝国暴政的程序员, 很快加入了, 这个团队的领地开始迅速扩大。 连C语言帝国里的一些商业巨头也纷纷来合作, 其中就包括Oracle , 微软这样的巨头 , 微软的头领Bill Gates还说 :这是迄今为止设计的最好的语言! 但是Bill Gates非常的不地道, 买了团队的Java 许可以后,虽然在自家的浏览器上也支持Applet, 但是他们却偷偷的试图修改Java , 想把Java绑死在自家的操作系统上赚钱, Java会变的不可移植。 这是团队难以忍受的, 团队和微软发起了一场旷日持久的游击战争, 逼着微软退出了Java领域, 开发 了自己的.NET 。
开拓疆土
从1995年到1997年,团队依靠 Java 不断的攻城略地,开拓疆土,团队的王国的子民不断增加, 达到了几十万之众, 已经是一个不可忽视的力量了。
但是大家发现,Java除了Applet, 以及一些小程序之外,似乎干不了别的事情。
C帝国的人还不断的嘲笑我们慢,像个玩具。
到了1998年, 经过密谋, Java 王国决定派出三只军队向外扩展:
Java 2 标准版(J2SE): 去占领桌面
Java 2 移动版(J2ME): 去占领手机
Java 2 企业版(J2EE): 去占领服务器 其中的两只大军很快败下阵来。
J2SE 的首领发现,开发桌面应用的程序员根本接受不了Java,虽然有做的很优雅的Swing 可以开发界面,但是开发出的界面非常难看, 和原生的桌面差距很大。 尤其是为了运行程序还得安装一个虚拟机, 大家都受不了。
J2ME也是, 一直不受待见,当然更重要的原因是乔布斯还没有重新发明手机,移动互联网还没有启动。 失之东隅,收之桑榆,
J2EE赶上了好时候,互联网大发展,大家忽然发现,Java简直是为写服务器端程序所发明的! 强大, 健壮, 安全, 简单, 跨平台 !
在J2EE规范的指导下, 特别适合团队开发复杂的大型项目。 团队授权BEA公司第一个使用J2EE许可证, 推出了Weblogic, 凭借其集群功能, 第一次展示了复杂应用 的可扩展性和高可用性。 【三高:高可用,高性能,高并发】
这个后来被称为中间件的东西把程序员从事务管理,安全管理,权限管理等方面解放出来, 让他们专注 于业务开发。 这立刻捕获了大量程序员的心。
很快Java 王国的子民就达到数百万之众。榜样的力量是无穷的,很快其他商业巨头也纷纷入场, 尤其是IBM,在Java 上疯狂投入,不仅开发了自己的应用服务器 Websphere, 还推出了Eclipse这个极具魅力的开源开发平台。
当然IBM利用java 获得了非常可观的效益, 软件+硬件+服务 三驾马车滚滚向前,把IBM推向了一个新的高峰。
帝国的诞生
大家也没有想到,除了商业巨头以外,程序员们也会对Java王国 这么热爱,他们基于Java 开发了巨多 的平台,系统,工具,例如:
构建工具: Ant,Maven, Jekins
应用服务器: Tomcat,Jetty, Jboss, Websphere, weblogic
Web开发: Struts,Spring,Hibernate, myBatis
开发工具: Eclipse, Netbean,intellij idea, Jbuilder
。。。。等等等等。。。。
并且绝大部分都是开源的 !微软眼睁睁的看着服务器端的市场被Java王国占据,岂能善罢甘休? 他们赶紧推出.NET来对抗,但Java团队已经不在乎了,因为他的系统是封闭的,所有的软件都是自家的:
开发工具是Visual Studio,应用服务器是IIS,数据库是SQL Server,只要你用.NET,基本上就会绑定微软。
另外他们的系统只能运行在Windows服务器上,这个服务器在高端市场的占有率实在是太低了。
2005年底, 一个新的王国突然崛起,他们号称开发效率比java 快5-10倍,由此吸引了大批程序员前往 加盟。
这个新的王国叫做Ruby on Rails, 它结合了PHP体系的优点(快速开发)和Java体系的优点(程序规 整), 特别适合快速的开发简单的Web网站。
虽然发展很快,但没有对Java 王国产生实质性的威胁,使用Ruby on Rails搭建大型商业系统的还很少。
除了Ruby on Rails ,还有PHP,Python ,都适合快速开发不太复杂的Web系统。 但是关键的是,复杂的商业系统开发还是Java 王国的统治之下。 所以两者相安无事。
2006年, 一只叫Hadoop的军队让Java王国入侵了大数据领域,由于使用Java 语言, 绝大多数程序员 在理解了Map/Reduce , 分布式文件系统在Hadoop中的实现以后,很快就能编写处理处理海量数据的程序,Java 王国的领地得到了极大的扩展。
2008年,一个名叫Android 的系统横空出世, 并且随着移动互联网的爆发迅速普及,运行在Android 之上的正是Java !
Java 王国在Google的支持下,以一种意想不到的方式占领了手机端,完成了当年J2ME 壮志未酬的事业 !
到今年为止, 全世界估计有1000万程序员加入了Java王国,它领土之广泛, 实力之强大, 是其他语言 无法比拟的。
Java 占据了大部分的服务器端开发,尤其是关键的复杂的系统,绝大多数的手机端,以及大部分的大 数据领域。一个伟大的帝国诞生了。
Java的特性和优势
简单性
就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基类等等。由于语法基于c,因此学习起来完全不费力。
面向对象
面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。模拟人的思维写程序,万物皆对象!
可移植性(跨平台性)
这是Java的一个重要的优势。Java代码或者说字节码、二进制码可以跨平台的移植,而不用管具体的操作系统和硬件环境。
“一次编写,随处运行”:“write once, run anywhere”
Java在设计时就很注重移植和跨平台性。比如:Java的Int永远都是32位。不像c++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
高性能
**JIT(JUST IN TIME)**即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近c++的效率。随着这种技术的一天天完善,也许有一天会超越编译代码的效率。
分布式
Java是为internet的分布式环境设计的,因为他能够处理tcp/ip协议。事实上,通过url访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,remote method Invocation),使程序能够通过网络调用方法。
动态性
就是在需要时将某些代码添加到正在运行的程序中。反射机制。当需要把某些代码添加到正在运行的程序中时,动态性是一个非常重要的特性。Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。
多线程
多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以构建防病毒,防篡改的系统。
健壮性
Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内 存的申请与释放等)。Java程序不可能造成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。
不过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该例外抛弃。再通过异常处理机制,程序就会发现这类例外,并加以处理。
当然,学习他这门语言,最初的目的,是因为使用的人多,需要去掌握学习,但是当慢慢的越来越深入的时候,你就会爱上他,发现他的无穷魅力并为之沉醉!
一些感悟
破山中贼易,破心中贼难,借用一句政治正确的话,每个时代都有每个时代的历史使命,一代人有一代人的历史际遇,对于年轻的我们,需要在实践中成长,一个人要不断提升自己的境界,从而看得更高、更远,做事也更有效率。这要求人要学会自觉地学习和积极地思考,只要能力提高,对环境的适应力加强,人一定能够在人群中居于优势地位
硅谷前身
二十世纪六十年代,当同在旧金山湾区的公立大学加利福尼亚大学伯克利分校在学术活动和学生运动上双双远近驰名之际,斯坦福大学却还默默无闻。由于是用来培训优种赛马的农场拿出来作为学校的校园加上那时在美国人眼中还是荒凉闭塞的边远西部,因此当时人们亦把斯坦福大学称之为“农场大学”。
斯坦福的腾飞,是七十年代之后的事,这还得归功于斯坦福面积大,八千多英亩的面积,学校可用的空间面积很大,于是一九五一年工程学院院长特曼(Frederick Terman)提出了一个构想——这便是斯坦福大学的转折点:将一千英亩以极低廉、只具象征性的地租,长期租给工商业界或毕业校友设立公司,再由他们与学校合作,提供各种研究项目和学生实习机会。斯坦福成为美国首家在校园内成立工业园区的大学。得益于拿出土地换来的巨大收获的这个建议,斯坦福使自己置身于美国的前沿:“工业园区内企业一家接一家地开张,不久就超出斯坦福能提供的土地范围,向外发展扩张,形成美国加州科技尖端、人才高地的“硅谷(Silicon Valley,也译作“矽谷)。斯坦福大学被科技集团与企业重重包围,与高科技、与商界更与实用主义和开拓精神这些典型的“美国精神建立密切的联系。随着美国西海岸“高科技带的兴起,各个电脑公司,包括“世纪宠儿”微软公司纷纷在这一线安营扎寨,斯坦福大学的地位越来越举足轻重,从此斯坦福大学就成为了硅谷的核心,是全世界科技创新的中心。
百度百科:https://baike.baidu.com/item/%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6/278716?fr=aladdin#1
全文参考引用:https://www.cnblogs.com/wang-ren/p/14212053.html
https://xxhjs.nuc.edu.cn/info/1010/3270.htm
Java:新世纪时代的召唤--启航相关推荐
- 电厂数字化进阶之路(三):时代的召唤
2010年我刚参加工作的时候,工作单位是个小的自备电厂,我所在的机组是50MW的装机,是公司当时最大的一台机组.虽然21世纪已经过去了十个年头,在大学的时候电脑已经很普及了.但是,我厂当时的DCS系统 ...
- 新零售时代,零售行业如何构建互联网架构
摘要:经过近10年的发展,阿里中间件Aliware摸索出了一套独特的架构实现技术.传统企业企业如何快速复制阿里巴巴互联网架构?Aliware如何赋能新零售?在2017苏州云栖大会企业级互联网架构专场上 ...
- 《新程序员002》图书正式上市! 从“新数据库时代”到“软件定义汽车”
20年前,伴随着互联网打开信息化大门,技术人成为新时代的开拓者.在时代的召唤下,CSDN于2001年推出国内首个面向IT人员的专业杂志--<程序员>,成为一代代开发者的技术启蒙.20年后的 ...
- 新智能时代颠覆情报的未来
来源:王飞跃的科学网博客 摘要:人工情报机构以"数字"和软件的形式记录或承载了一个实际情报机构的知识.行动和组织等KAO一体化的步骤与过程. 访中科院自动化研究所复杂系统管理与控制 ...
- 雷卷 java,阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性...
阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性 发布时间:2020-07-04 08:25:36 来源:51CTO 阅读:315 作者:阿里系统软件技术 栏目:云计算 作者 ...
- 为什么说时代在召唤华为!
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 操作系统的历史,是一部没有硝烟的战争史! 遥想当年,Unix在肯·汤普森(曾为贝尔实验室员工)的上班划水中诞生:Windows迅猛崛起: ...
- 新世纪10年100个好东西 淘宝、QQ、伟哥入选
10年100个让我们生活更美好的东西,它们是科技的胜利,更是人性的胜利 网站类 1.Twitter.com 只有两种人会不喜欢Twitter,话痨和日报记者.前者会发现140字无法透彻表达观点,后者则 ...
- 新零售时代下,物流行业迎来新机遇
电商,一个异军突起的新行业,将改变传统商业旧模式.根据相关数据显示,2010-2019年,我国电商交易规模从4.5万亿元增长到34.8万亿元,年均复合增速达25%.在电商飞速发展的态势下,物流行业也迎 ...
- 新相亲时代:2亿人及其背后家庭组成的“擂台”
原标题:新相亲时代 http://news.sina.com.cn/o/2017-09-20/doc-ifykyfwq8587237.shtml 9月16日,重庆洪崖洞相亲角场面壮观如赶集,相亲 ...
最新文章
- Vue笔记(五)——Token生命周期
- BS4 keep on!
- 第二阶段—个人工作总结03
- hdu 1255(线段树求重叠面积)
- 使用VS2013在WIN8.1上运行gaclib的hello world
- Ubuntu Linux将支持所有树莓派设备
- AJAX与SQL Server(一)
- day01语法python入门_2
- 中兴通讯 基于定位的技术和市场分析
- c# 操作IIS应用程序池
- 微博拟全球发售1100万股 发售价不超388港元
- Lyft无人车战略揭秘:两个团队并行,用百度Apollo,想定行业标准
- 1.maven下仅shiro框架对shiro的测试使用
- ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec
- 2018年高教社杯全国大学生数学建模竞赛A题解题思路
- 微信开发者平台学习笔记
- spark学习之sparksql语法优化
- Edge浏览器快捷键
- cass等距离等分线段的命令键_cad直线均分的命令(CAD等分线段快捷键?)
- REST, Hypermedia HATEOAS - Django REST framework
热门文章
- 学渣的刷题之旅 leetcode刷题 66. 加一
- 为你的个人博客添加访客地图
- 第10次Scrum会议(10/22)【欢迎来怼】
- 求解非线性方程组的牛顿法c语言,牛顿下山法求解非线性方程(组)(C实现)...
- JAVA操作Excel时文字自适应单元格的宽度设置方法
- python将图片转换成二进制文本_python将图片文件转换成base64编码的方法
- 【摸鱼神器】UCode Cms管理系统 内置超好用的代码生成器 解决多表连接痛点
- lpop 原子_Matter:碳载单原子催化剂用于能量转化和存储的最新进展 – 材料牛...
- ArcGIS Online试用版注册 并发布要素服务
- reddits股票线程成为华尔街必读的内容