您的位置:首页 > 编程语言 > Java开发

review_core_basic_java(1)java程序设计概述

2016-06-22 20:55 295 查看
【0】README
1)本文部分文字描述转自 “core java volume 1” 旨在review
“review_core_basic_java(1)java程序设计概述” 的相关知识;

【1】 java 程序设计平台

【2】 java 白皮书的关键术语
0)intro:java的设计者编写了颇有影响力的白皮书,用来解释设计的初衷以及完成的情况,并发布了一个摘要;该摘要归纳为11个关键术语(terms);

term1)简单性;
term2)面向对象: java 与 C++ 的主要不同点在于多继承;(干货——java与
C++的不同点)

term3)网络技能(Network-Savvy): java有一个扩展的例程库,用于处理像HTTP
和 FTP 之类的TCP/IP 协议;
term4)健壮性: java 和 C++ 最大的不同在于 java采用的指针模型可以消除重写内存和损坏数据的可能性;这个特性非常有用,
它使得java 编译器能够检测许多在其他语言中仅在运行时刻才能够检测出来的问题;java是绝对安全的, 其原因是永远不会存取一个坏的指针,造成内存分配错误,也不必防范内存泄露;(干货——java 和 C++ 最大的不同)
term5)安全性:java
适用于网络/分布式环境,使用 java 可以构建防病毒、防篡改的系统;

一开始, java就设计成 能够防范各种攻击, 其中包括:

term5.1)运行时堆栈溢出; 如,蠕虫等病毒常用的攻击手段;

term5.2)在自己的处理空间之外破坏内存;

term5.3)未经授权读写文件;

Attention) 自java1.1 以来,java就有了 数字签名类 的概念,通过数字签名类,可以确定类的作者;如果信任这个类的作者,这类就可以在你的机器上拥有更多的权限;

term6)体系结构中立: java编译器通过生成与特定的计算机体系结构无关的
字节码指令来实现这一特性;(编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有 java 运行时系统, 就可以在许多处理器上运行)
即时编译: 虚拟机有一个选项,可以将使用最频繁的 字节码序列 翻译成 机器码,这个过程被称为 即时翻译;(干货——引入了即时编译)
term7)可移植性: 在java
中, 数据类型具有固定的大小, 这消除了代码移植时令人头痛的问题, 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰, 而字符串采用的是 标准的 Unicode 格式存储的(例如, java中的int 永远为32位整数, 而在C/C++中, int 可能是16位整数、32位整数,也可以是编译器提供商指定的其他大小);
term8)解释性:java 解释器可以在任何移植了解释器的机器上执行
java 字节码;(现在,使用 即时编译器 将字节码 翻译成 机器码)
term9)高性能: 在运行时, 字节码可以快速地翻译成运行这个应用程序的特定CPU
的机器码;
term10)多线程:多线程可以带来更好的交互响应和实时行为;(多线程编译的简单性
是 java 成为颇具魅力的服务器段开发语言的主要原因之一)

term11)动态性:java 能够适应不断发展的环境,库中可以自由地添加新方法和实例变量,
而对客户端没有影响;

【3】 java applet 与 internet1
1)想法简单:用户从internet 下载java 字节码, 并在自己的机器上运行;

2)java applet:在网页中运行的 java 程序被称为 applet;
3)用户下载一个applet 就如同在网页中嵌入一副图片; 关键一点是:图片是活动的,
它可以对用户命令做出响应,改变外观,在运行它的计算机 与 提供它的计算机之间传递数据;而静态网页将无法实现这种直接的操作;

【4】 java 发展简史
1)java的历史要追溯到1991年: 由 Patrick Naughton 和 James Gosling(计算机全能奇才)设计一种计算机语言,主要用于像有线电视转换盒之类的消费设备。由于这些消费设备的处理能力和内存都很有限,
所以语言必须非常小且能够生成非常紧凑的代码;另外, 由于不同的厂商会选择不同的中央处理器(CPU), 因此这种语言的关键是 不能与任何特定的体系结构捆绑在一起,这个项目的名字被命名为 “Green”;

2)引入虚拟机:代码短小,紧凑且与平台无关, 这些要求促使开发团队联想起 很早以前的一种模型, 某些 Pascal的实现曾经在早起的
PC 上尝试过这种模型。以Pascal的发明者Niklaus Wirth 为先驱, 率先设计出一种为假想的机器生成中间代码的可移植语言(假想的机器称为虚拟机——java虚拟机即 JVM的命名由来)。这种中间代码可以应用于已经正确安装解释器的机器上。Green 项目工程师也使用了虚拟机;
3)引入Oak 和 java:不过,Sun公司的人都有 UNIX 的应用背景, 因此所开发的语言以 C++为基础,而不是
Pascal, 特别是这种面向对象语言, 而不是面向过程的。Gosling 把这种语言称为“Oak”(这大概因为他非常喜欢其办公室外的橡树)。Sun公司后来发现Oak是一种已有的计算机语言的名字,于是,将其改名为java;
4)Green项目发布第一个产品——*7:92年, Green项目发布了第一个产品——7*,Green项目组成员想把该技术推向市场,于是,Green项目组竞标了一个提供视频点播等新型服务的
有线电视盒的项目, 但没有成功,得到这个项目的公司的领导恰恰是开创 Netscape 公司的 Jim Clark。Netscape 公司后来对java 的成功给予了很大的帮助;

5)First Person公司解散:Green项目组(这时换了一个新名字——First Person 公司)花费了1993年一整年以及1994年上半年来寻找技术买家,
然而一个也没有找到, 1994年,First Person 公司解散;
6)Internet的万维网发展壮大:当这一切在 Sun 公司中继续进行的时候, Internet 的万维网也日渐发展壮大。Web的关键是吧超文本页面转换到屏幕上的浏览器。
1994年大多数人还都在使用 Mosaic, 这是一个1993年出自 伊利诺斯大学超级计算中心的非商业化的Web 浏览器;
7)Gosling决定开发浏览器:Gosling 说在 1994年中期, java 语言的开发者意思到: ”我们能够建立一个最酷的浏览器“。因为,
我们已经拥有在 客户机/服务器 主流模型中所需要的体系结构中立、实时、可靠、安全——这些在工作站环境中并不太重要,所以我们决定开发浏览器;
8)HotJava浏览器问世:实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的,
并演变为 HotJava 浏览器(采用 Java 语言编写), 他们还让 HotJava 浏览器具有执行网页中内嵌代码的能力, 这些在1995年5月23日的 SunWorld 大会上得到展现;
9)java1.0发布:1996年初, Sun 发布了Java的第一个版本; 1998年12月 Java1.2 发布3天后,
Sun 公司市场部将其名称改为 更加吸引人的 “Java 2 标准软件开发工具箱1.2 版”;除了标准版外, Sun还推出了两个其他的版本: 一个是用于手机等嵌入式设备的“微型版”;另一个是用于服务器端处理的“企业版”。
10)Java成为服务器端应用的首选平台:标准版的1.3和1.4 对最初的Java2 版本做出了某些改进,扩展了标准类库,提高了系统性能;在此期间,
Java applet 采用低调姿态,并淡化了客户端的 应用, 但 Java却成为服务器端应用的首选平台;
11)Java5.0版发布:5.0版 是 自1.1 版以来第一个对 Java语言做出重大改进的版本(这一版本原来被命名为1.5版,
在2004年的 JavaOne会议后,版本数字升至 5.0), 这个版本添加的内容包括:泛型类型(generic type), for each 循环, 自动装箱和元数据;
12)版本6于2006年年末发布:这个版本没有对语言方面再进行改进,但增强了类库;
13)Sun Microsystems 于2009年被Oracle 收购:随着数据中心越来越依赖于商业硬件 而不是 专业服务器,Sun
Microsystems 终于沦陷, 于2009年被Oracle 收购;Java的开发停滞了很长一段时间, 直到2011年 Oracle发布了Java的一个新版本 Java7, 其中只做了一些简单的改进,而决定将重要的改进推迟到 Java8, 该版本将在2013年发布;

【5】 关于Java 的常见误解
........................
8)Java是解释型的,因此对于关键的应用程序速度太慢了;
即时编译器:早起的Java 是解释型的, 现在除了想手机这样的微型平台外,Java 虚拟机使用了 即时编译器, 因此采用 Java编写的热点代码 其运行速度与C++ 相差无几;(干货——引入了即时编译器)

9)所有的Java 程序都是在网页中运行的: 所有的Java
applet 都是在网页浏览器中运行的, 这恰恰是 applet的定义, 即一种在网页中运行的 Java程序。然而, 大多数Java 程序是运行在 浏览器之外的独立应用程序。实际上, 很多Java 程序都在 Web 服务器上运行并生成用于网页的代码;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: