出生
Java 的 出生O(∩_∩)O哈哈~
“书写Java传奇的Sun Microsystems曾经堪称‘日不落’帝国,但服务器市场的萎缩却让这个声名赫赫的庞大帝国从蓬勃走向落寞。
2009年被Oracle收购之后,Sun逐渐淡出了视线。
2011年Oracle发布Java新版本——Java 7”。——By Cay S. Horstmann Gary Cornell
1995年底,Java语言便在Internet舞台随即亮相,瞬间名声大噪。在于Java有望成为连接用户与信息的万能胶, whatever those information comes from
Web服务器、数据库、信息提供商,or 任何其他渠道。
1996年Java第一次发布就引起了人们的极大兴趣,关注Java的人士不仅限于出版社,还有《纽约时报》、《华盛顿邮报》、《商业周刊》。
Java 是第一个也是唯一一种在National Public Radio上占用了10分钟时间来进行介绍的程序设计语言,&&得到了¥100,000,000的风险投资基金。
Java is not just a kind of program language
Java 是一个完整的平台,有一个庞大的库,其中包含诸多可重用的代码和一个提供such as安全性、跨操作系统的可移植性&自动垃圾回收集等服务的执行环境。
语法——赏心悦目
语义——易于理解
Java“白皮书”key words
白皮书address:www.oracle.com/technetwork/java/langenv-140151.html
key words:http://labs.oracle.com/features/tenyeares/volcd/papers/7Gosling.pdf
1. 简单性 2. 面向对象性 3. 网络技能(Network-Savvy) 4. 健壮性 5. 安全性
6. 体系结构中立 7. 可移植性 8. 解释型 9. 高性能 10. 多线程 11. 动态性
1.简单性:
a) Java语法can be “纯净版”的C++语法
没有头文件,指针运算even指针语义、结构、联合、操作符重载or虚基类等等。
b) 小
支持能够开发在小新机器上独立运行的软件。 基本解释器以及类支持大约仅需40KB;基本的标准类库以及多线程的支持(基本一个自包含的微内核)大约175KB。
2. 面向对象性:
1 面向对象设计是一种程序设计技术。将重点放在数据(对象)和对象的接口上。 2 3 本质上,Java面向对象能力和C++是一样一样哒。 4 5 e.g. 比如“面向对象的”画家要绘画一只小猫时,她所自始至终所注重的是那只小猫,第二才是想要使用工具。 6 7 while“非面向对象的”画家,先考虑用工具。 8 9 In a word, Java是面向对象的, 而C/Basic这样的呢,是面向过程的。【面向对象程序设计 V.S 面向过程程序设计在思维方式上存在很大的差别】首先要改变思维 10 11 方式, 对象概念也要清楚O(∩_∩)O后续回忆补充OOP
3. 网络技能:
Java有一个拓展的;例程库,用于处理诸如HTTP & FTP这样的TCP/IP协议。
Java应用程序可以通过URL打开和访问网络上的对象,这种便捷程度feels like 访问本地文件一样一样
哈哈哈,有了java,socket连接此等耗损大脑繁重的任务也将变得如此之简单、远程调用机制使得分布式对象之间可以进行通信
4. 健壮性:
1 使得Java程序具有多方面的可靠性,此乃我大java设计的目标之一。 2 Java投入了大量的精力进行早期的问题检测、后期动态的(运行时)检测,并消除了有出错倾向的状态。。。。。。 3 So,Java 和 C++最大的不同就在于——Java采用的指针模型可以消除重写内存和损坏数据的可能性 4 (想当初我学习C指针之际的血泪史啊,花费好几个小时的检查由于那个小小的指针bug而引起内存冲突) 5 我大Java编译器可以检测许多在其它语言中仅在运行时刻才能检测出来的问题 。 6 【喜极而泣】Java绝对是安全的,因为它啊,从来不会存取一个“坏的”指针,从而造成内存分配的错误,当然就不必防范内存的泄露啦。 7 (Java不需要使用指针构造像字符串、数组这样的结构。在有必要之际,Java能够具有指针的能力——链表)
5. 安全性:
1 Java适用于网络/分布式环境。当然就少不了在安全方面的努力了。 2 Java可以构建防病毒、防篡改的系统。 3 At the first time, Java 设计“超能力”就可以防范各种攻击—— 4 a) 运行时堆栈溢出。 e.g 蠕虫等病毒常用的攻击手段 5 b) 在自己的处理空间之外破坏内存 6 c) 未经授权读写文件 7 当然“永远不要把话说绝!”安全方面发现Bug的技术一直Up Up Up!!!!
6. 体系结构中立:
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行。
Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速
的 翻译成本地机器的代码。
【这点思路褒贬不一】解释字节码肯定没有全速运行的机器指令快,会慢很多很多。
此刻呢,就有了虚拟机——虚拟机有一个选项,可以将使用最频繁的字节码序列翻译成机器码——此过程被称为及时编译。
虚拟机也可迅速的生成字节码,并动态地增强所运行程序的处理能力。
7. 可移植性:
1 a) Java的基本数据类型的大小以及有关算法都做了明确的说明 2 Different with C & C++, Java规范中没有“依赖具体实现的地方”。 3 e.g Java中的int永远为32位整数, while in C&C++, int can be 16位、32位整数, also can be 编译器提供商指定的其它大小。唯一的限制只是in类型的大小不能 4 低 short int,并且不能高于long int。 5 【哈哈哈哈】In Java, 数据类型具有固定的大小。which消除了代码移植时令人头痛的主要问题。 6 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。 字符串是用标准的Unicode格式存储的。【这点比较可爱呢】 7 b) 作为系统组成部分的类库,定义了可移植的接口。 8 e.g 有一个抽象的Window类给出了在UNIX、Windows & Macintosh环境下的不同实现。
8. 解释型:
Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于连接是一个增量式且轻量级的过程,所以,开发过程也变得更加快捷,更加具有探索性。
Now, use 即时编译器将字节码翻译成机器码。
9. 高性能:
1 字节码可以(在运行时刻)快速地翻译成运行这个应用程序的特定CPU的机器码 2 Although解释后的字节码已经很满意了, 有些场合下,还是需要更加高效的性能的。 3 【即时编译器】——可以监控进程执行那些代码并优化这些代码以提高速度。 4 ——更为复杂的优化是消除函数调用(内嵌)。即时编译器知道哪些类已经加载。如果基于当前加载的类集,且特定的函数不被覆盖的话就可以内嵌。 5 当然,必要时,更可以撤销优化。
10. 多线程: 多线程可以带来更好的交互响应和实时行为。 只要操作系统支持,Java中的线程就可以利用多个处理器。 在不同的机器上,只是调用多线程的代码完全相同;Java把多线程的实现交给了底层的操作系统or线程库来完成 【多线程编译的简单性是Java成为颇具魅力的服务器端开发语言 的主要原因之一】
11. 动态性:
1 相较之与C、C++而言,Java更加的具有动态性。 2 Java可以适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何的影响。在Java中找出运行时类型信息十分简单。 3 【When 需要将某些代码添加至正在运行的程序中时,动态性就大放异彩了】 4 e.g 从Internet上下载代码,然后在在浏览器上运行。 5 Java最新版本允许程序员知道对象的结构和行为, which is pretty useful for 必须在运行时分析对象的系统——Java GUI构建器、智能调试器、可插拔组件、对象数据库