- 我是一个线程(修订版)
- 我是一个 Java class
- Javascript:一个屌丝的逆袭
- Java : 一个帝国的诞生
- JSP 一个装配工的没落
- TCP/IP 之 大明王朝邮差
- TCP/IP 之大明内阁
- TCP/IP 之蓟辽督师
- CPU 阿甘
- CPU 阿甘之烦恼
- CPU 阿甘:函数调用的秘密
- 我是一个网卡
- 我是一个路由器
- 我是一个进程
- 我是一块硬盘(上)
- 我是一块硬盘(下)
- 我是一个键盘
- 张大胖的 socket
- 张大胖学递归
- 学习面向对象的令狐冲
- 张大胖学数据库
- 数据库村的旺财和小强
- 小李的数据库之旅(上)
- 小李的数据库之旅(下)
- 漫画:什么是机器学习?
- 那些烦人的同步和互斥问题
- IE 为什么把火狐和 Chrome 给打伤了?
- 对浏览器村的第二次采访
- 节约标兵 IE 的自述
- EMail 诞生记
- Email 诞生记(下)
- Http 历险记(上)
- Http 历险记(下)-- Struts 的秘密
- 动物王国的面向对象
- 冯·诺伊曼计算机的诞生
- Http Server : 一个差生的逆袭
- 张大胖的加法器
- 从 1 加到 100:一道简单的数学题挑战下你的大脑
- 编程语言
- Javascript:一个屌丝的逆袭
- 计算机语言之战
- 我和编程语言的爱恨情仇(上)
- 我和编程语言的爱恨情仇(下)
- Android 为什么选择了 Java
- iOS 为什么选择了 Object-C?
- Basic : 一个老兵的自述
- Node.js : 我只需要一个店小二
- 命令式编程 vs 声明式编程
- 编译还是解释?
- 程序人生
- “架构师"小赵
- 师兄说
- 师姐说
- 小王的架构师之路
- 小李的版本管理系统
- 小超穿越记
- 小李的 Build 之路(上)
- 小李的 Build 之路(下)
- 张大胖改 Bug
- 我的编程之路--大学趣事
- 码农小王的一天
- 小李在外企
- 张大胖的需求估算
- 从厨师到码农
- 聊一聊那些神一样的程序员们(上)
- 聊一聊那些神一样的程序员们(中)
- 聊一聊那些神一样的程序员们(下)
- 谁是互联网之父?
- 一个价值百万的创业教训
- 让自己与众不同 - 提升工作的价值
- 看看你的“易燃性”
- 从无聊的工作中寻找价值
- 什么样的学生适合报考计算机?
- 谈谈程序员的职业方向(上)
- 谈谈程序员的职业方向(中)
- 谈谈程序员的职业方向(下)
- 谈谈培训班的作用
- 码农需要知道的“潜规则”
- 学习编程的加速度
- 码农在工作中的必备能力
- 码农和英语
- 老司机经验
- 假如时光能够倒流, 我会这么学习 Java
- 假如我是计算机系老师
- 学会编程, 而不是学会 Java
- 从增删改查中突围
- 抽象:程序员必备的能力
- 懒就一个字
- 编程的自学方法
- 小王买房记
- 从一道面试题谈谈一线码农应该具备的基本素质
- 想写框架的看过来
- 苹果手机变砖头以后
- 如何快速的学习一门技术?
- 唯一不变的是变化: 谈谈微信应用号
- 什么是企业应用?
- 勿以浮沙筑高台
- 为什么敏捷开发难于成功?
- localhost vs 127.0.0.1
- GitHub/Stackoverflow 找工作时有什么用?
- 动词 or 名词 :这是一个问题
- 如何选择入行语言
- 有时候,沉默是金
- 零 Bug 的代码是怎么炼成的?
- 浮点数为什么不精确?
- 文章错误大全
- Open Source--不要为了开源而开源
- 一不留神,代码就腐化了
- 先做个“键盘侠”, 再来写程序
- 不加断点调试的程序员是好程序员
- 码农必备技能:烂代码的处理之道(上)
- 码农必备技能:烂代码的处理之道(下)
- 学习数据结构有用吗?
- 从现在开始,丰富你的简历
- 那些永不过时的书,你看过几本吗?
- 学好编程必备的一个品质你知道吗?
- 你最爱的 Java
- 搞懂了这几点,你就学会了 Web 编程
- Spring 的本质系列(1) -- 依赖注入
- Spring 本质系列(2)-AOP
- 三层架构和 MVC 那点事儿
- Java 帝国之拨云见日识回调
- 小张的 Duck Typing
- JDBC 的诞生
- JDBC 后传
- 一个不安分的 JDBC 驱动
- Java 帝国之 Java bean (上)
- Java 帝国之 Java bean(下)
- Java 帝国之函数式编程
- Java 帝国之函数式编程(下)
- 关于 Java 初学者需要知道的 10 件事
- JUnit 你不知道的那些事儿
- 圣诞礼物:Java EE 的历史
- Java EE 读书指南
- 给小白的 Java EE 指南
- 给小白的 Java EE 指南(2)
- 给小白的 Java EE 生存指南(3) : XML
- 给小白的 Java EE 生存指南(4) : 一只叫 Tom 的猫
- 给小白的 Java EE 指南(5) : AJAX
- 给小白的 Java EE 生存指南(6) :Java 反射
- 闲聊
- "饿了么"初体验
- 来自大脑的控诉
- 一个高中生是怎么玩自媒体的?
- 尝试 分答
- 到底应不应该上培训班?
- 自学编程中遇到问题怎么办?
- 据说 99%的初级程序员看完后都不迷茫了
- 一行代码引发的“血案”
- 对一个死锁问题的思考
- 通过外包进入名企
- 请开往十年前的今天
- 为什么自学中最好有个师傅指导一下?
- 这个网站值得你花时间投入
- 为什么你无法坚持自学编程?
Java : 一个帝国的诞生
1 C 语言帝国的统治 现在是公元 1995 年, C 语言帝国已经统治了我们 20 多年, 实在是太久了。
1972 年, 随着 C 语言的诞生和 Unix 的问世, 帝国迅速建立统治, 从北美到欧洲, 从欧洲到亚洲, 无数程序员臣服在他的脚下。
帝国给我们提供了极好的福利:贴近硬件, 运行极快, 效率极高。
使用这些福利, 程序员们用 C 开发了很多系统级软件,操作系统, 编译器, 数据库,网络系统.....
但是帝国也给我们安上了两个沉重的枷锁: 指针和内存管理
虽然指针无比强大, 能直接操作内存, 但是帝国却没有给我们工具去做越界的检查, 导致很多新手程序员轻易犯错。
至于内存管理, 帝国更完全是放任的态度: 你自己分配的空间, 自己去释放 !
更要命的是这些问题在编译期发现不了, 在运行时才会突然暴露, 常常让我们手忙脚乱, 昏天黑地去调试。
我们的大量时间和宝贵的精力都被浪费在小心翼翼的处理指针和内存分配上。
每个程序员都被这两个东西搞的焦头烂额! 帝国宣称的可移植性骗了我们,他宣称我们在一个机器上写的程序, 只要在另外一个机器上编译就可以了, 实际上不是这样。 他要求我们尽量用标准的 C 函数库。其次,如果遇到了一些针对特定平台的调用, 需要对每个平台都得写一份 ! 有一点点小错误,都会导致编译失败。
1982 年,帝国又推出了一门新的语言 C++, 添加了面向对象的功能,兼容 C, 有静态类型检查, 性能也很好。
但是这门新的语言实在是太复杂了, 复杂到比我聪明的多的人都没有办法完全掌握这门语言,它的很多特性复杂的让人吃惊。
C++在图形领域和游戏上取得了一些成功, 但是我一直学不好它。 2 反抗 我决定反抗这个庞大的帝国, 我偷偷的带领着一帮志同道合的兄弟离开了,我们要新建一块清新自由的领地。
为了吸引更多的程序员加入我们, 我们要建立一个新的语言,这个语言应该有这样的特性:
语法有点像 C , 这样大家容易接受 没有 C 语言那样的指针 再也不要考虑内存管理了, 实在受不了了 真正的可移植性, 编写一次, 到处运行 面向对象 类型安全 还有,我们要提供一套高质量的类库, 随语言发行。
我想把这个语言命名为 C++-- , 即 C++减减, 因为我想在 C++的基础上改进,把它简化。
后来发现不行, 设计理念差别太大。
干脆重启炉灶。
我看到门口的一棵橡树, 就把这个语言叫做 Oak。 但是后来发布的时候, 发现 Oak 已经被别人用了, 我们讨论很久, 最终决定把这门新的语言叫做 Java。
为了实现跨平台, 我们在操作系统和应用程序之间增加了一个抽象层: Java 虚拟机
用 Java 写的程序都跑在虚拟机上, 除非个别情况, 都不用看到操作系统。 3 一鸣惊人 为了吸引更多的人加入我们的新领地, 我们决定搞一个演示, 向大家展示 Java 的能力。
出世未久的 Java 其实还远不完善。 搞点什么好呢?
我们把眼光盯上了刚刚兴起的互联网, 1995 年的网页简单而粗糙, 缺乏互动性。 于是我们在浏览器上弄了个小插件, 把 java 运行环境放了上去。
然后在上面开发了一个图形界面的程序(Applet), 让它看起来美轮美奂, 震撼人心。
每一个看到他的程序员都会发出“Wow”的惊叹 !为之倾倒。
Java 活了!
通过 Applet , 无数的程序员看到了 Java 这门语言,了解了这门语言特性以后, 很多无法忍受 C 帝国暴政的程序员, 很快加入了我们, 我们的领地开始迅速扩大。
连 C 语言帝国里的一些商业巨头也纷纷来和我们合作, 其中就包括 Oracle , 微软这样的巨头 , 微软的头领 Bill Gates 还说 :这是迄今为止设计的最好的语言!
但是 Bill Gates 非常的不地道, 买了我们的 Java 许可以后,虽然在自家的浏览器上也支持 Applet, 但是他们却偷偷的试图修改 Java , 想把 Java 绑死在自家的操作系统上赚钱, Java 会变的不可移植。
这是我们难于忍受的, 我们和微软发起了一场旷日持久的游击战争, 逼着微软退出了 Java 领域, 开发了自己的.NET , 这是后话。 4 开拓疆土 从 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 推向了一个新的高峰。 5 帝国的诞生 大家也没有想到,除了商业巨头以外, 程序员们也会对 Java 王国 这么热爱, 他们基于 Java 开发了巨多的平台,系统,工具,例如:
构建工具: Ant,Maven, Jekins
应用服务器: Tomcat,Jetty, Jboss, Websphere, weblogic
Web 开发: Struts,Spring,Hibernate, myBatis
开发工具: Eclipse, Netbean,intellij idea, Jbuilder 。。。。等等等等。。。。
并且绝大部分都是开源的 !
微软眼睁睁的看着服务器端的市场被 Java 王国占据, 岂能善罢甘休? 他们赶紧推出.NET 来对抗, 但我们已经不在乎了, 因为他的系统是封闭的,所有的软件都是自家的: 开发工具是 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 占据了大部分的服务器端开发,尤其是关键的复杂的系统, 绝大多数的手机端, 以及大部分的大数据领域。
一个伟大的帝国诞生了。
这个帝国能生存多久? 谁会摧毁这个庞大的帝国呢?
我不知道, 你呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论