JAVA课堂笔记一 理论学习总结篇
JAVA 基础
一、Java历史及了解C语言
著名的计算机科学家丹尼斯·里奇(Dennis Ritchie)创造的
70年代初
1983年,人们将计算机科学方面的最高荣誉——图灵奖颁发给了里奇,以表彰他对计算机科学所做出的杰献。
● 图灵奖的由来
阿兰·图灵(Alan Turing)这个名字无论是在计算机领域、数学领域、人工智能领域还是哲学、逻辑学等领域,都可谓“掷地有声”。图灵是计算机逻辑的奠者,许多人工智能的重要方法也源自这位伟大的科学家。他在24岁时提出了图灵机理论,31岁参与了Colossus(二战时,英国破解德国通讯密码的计算机)的研制,33岁时构思了仿真系统,35岁提出自动程序设计概念,38岁设计了“图灵测试”,在后来还创造了一门新学科—非线性力学。虽然图灵去世时只有42岁,但在其短暂而离奇的生涯中的那些科技成就,已让后人享用不尽。人们仰望着这位伟大的英国科学家,把“计算机之父”、“人工智能之父”、“破译之父”等等头衔都加冕在了他身上,甚至认为,他在技术上的贡献及对未来世界的影响几乎可与牛顿、爱因斯坦等巨人比肩。
● C++语言
当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,所以就叫C++
著名的计算机科学家Bjarne (比扬尼)博士
80年代初
● JAVA语言
Java之父亲James Gosling
Java历史:
1.Java与微软
2003年4月2 日,Sun与微软达成16亿美元的法律和解
C#
.Net之父Anders
2.为什么要学习JAVA
Java具有两大特性:可跨平台运行,面向对象。这两个特性是Java得以迅速发展的重要原因。
Java程序具有可跨平台运行的特性,这个特性取决于它的应用程序的运行机制。
通常计算机语言的运行机制如图:
源代码
┃
┃
┣━━━━━━━━━━━━━━━━━━┫
┃
┃
┃
↓ ↓ ↓
编译器Pentium 编译器PowerPC 编译器SPARC
↓ ↓ ↓
可运行的Binary码
可运行的Binary码
可运行的Binary码
Java的运行机制如下:
java-Bytecode
↓
┢━━━━━━━━━━━━━━━━━━━━━━━━━┪
┃
┃
┃
┃
┃
┃
┃
┃
JVM SUN JVM SUN JVM IBM JVM SUN
Linux PC Windows PC Aix Solaris
┃
┃
┃
┃
↓ ↓ ↓ ↓
PC/Linux PC/Windows Unix/Aix Unix/Solaris
● 面向对象(来自ForgetNever社区 www.52mvc.com )
现在面向对象的编程思想已经有好长的历史了,我们可能天天都在运用.我们应该如何理解它呢?100个人可能有100种答案,因为它太容易理解了,同时也是最难真正理会其含义的.
大部人可能会说:万事万物皆对象.说对象是类的实例等... ,看看下面这段话,出现了多少个对象
床前明月光
疑似地上霜
举头望明月
低头思故乡
这首诗中包含的对象有:床、月、地、霜、头、故乡。
● 了解Java
什么是Java Java的特性
如何学习Java
1.什么是Java
最早是Sun公司Green Project中撰写Star7应用程序的一个程序语言
James Gosling的窗外有颗橡树(Oak)
全球信息网兴起,Java Applet成为网页互动技术的代表
1995/5/23,Java Development Kits(当时的JDK全名)1.0a2版本正式对外发表
在不同的时间点上,Java这个名词有着不同的意义。要了解什么是Java,从一些历史性的数据上,您可以对Java的角色有所了解。
Java最早是Sun公司(Sun Microsystems Inc.)“绿色项目”(Green Project)中编写Star7应用程序的一个程序语言,当时的名称不是
Java,而是取名为Oak。绿色项目开始于1990年12月,由Patrick Naughton、Mike Sheridan与James Gosling主持,目的是希望构筑
出下一波计算机应用的趋势并加以掌握,他们认为下一波计算机应用的趋势将会集中在消费性数字产品(像今日的PDA、手机等消费性电子商
品)的使用上。在1992年9月3日Green Team项目小组展示了Star7手持设备,这个设备具备了无线网络连接、5 in的LCD彩色屏幕、
PCMCIA接口等功能,而Oak在绿色项目中的目的,是用来编写Star7上应用程序的程序语言。Oak名称的由来,是因为James Gosling的
办公室窗外有一颗橡树(Oak),就顺手取了这个名称,但后来发现Oak名称已经被注册了,工程师们边喝咖啡边讨论着新的名称,最后灵机
一动而改名为您所常听到的Java。万维网(World Wide Web)兴起,Java Applet成为网页互动技术的代表。1993年第一个万维网浏览器
Mosaic诞生,James Gosling认为因特网与Java的一些特性不谋而合,利用Java Applet在浏览器上展现互动性的媒体,对人们的视觉感
官是一种革命性的颠覆。Green Team仿照了Mosaic开发出一个以Java技术为基础的浏览器WebRunner(原命名为BladeRunner),后来
改名为HotJava。虽然HotJava只是一个展示性的产品,但它使用Java Applet所展现的多媒体效果很快吸引了许多人的注意。在1995年5
月23 日,Java Development Kits(当时的JDK全名)1.0a2版本正式对外发表,而在1996年Netscape Navigator 2.0也正式支持Java,
Microsoft Explorer亦开始支持Java。从此Java在因特网的世界中逐渐流行起来。虽然Star7产品并不被当时的消费性市场所接受,绿色项
目面临被撤销的命运,然而万维网(World Wide Web)的兴起却给了Java新的生命与舞台。
Java是一个更简单的面向对象(Object-Oriented)程序语言,具有更高的跨平台可能性。
Java是一个支持面向对象观点的程序语言,在使用上比C++更为简单。它限制或简化了C++语言在开发程序时的一些功能,虽然牺牲了某
些存取或弹性,但让开发人员避免开发软件时可能发生的错误,并让程序语言本身的使用上更为方便,而用Java所编写出来的程序在不同的
平台间具有更高的可移植性。对于“一次编写,到处运行”(Write Once, Run Anywhere)这样的梦想,Java提供了更高的可能性。Java可
以代表程序语言,但在今日,更多时候代表了软件开发的架构。在Java版本发表时是以Java Development Kits名称发表,简称JDK,到
J2SE 5.0时的JDK称为J2SE Development Kit,除了提供编写Java程序时所必要的编译、运行、调试等工具之外,更搭配有越来越丰富
的API(Application Programming Interface)。随着应用范围的越来越广,Java演化出3个不同领域的应用平台:J2SE、J2EE与J2ME。
Java不再只是单纯的程序语言加上API库的组成,更提供开发人员在各个领域开发软件时,一种依循的标准与框架(Framework)工具。
总而言之,随着时间的推移,Java这个名词不再只是表示一个程序语言,而是一种开发软件的平台,更进一步地也是一种开发软件时的标准
与架构的统称。事实上语言在整个Java的蓝图中只不过是一个极小的部分,学习Java本身也不仅仅在于学习如何使用它的语法,更多的时候
是在学习如何应用Java所提供的资源与各种标准,以开发出架构更好、更容易维护的软件。
Java是面向对象(Object-Oriented)程序语言,具有更高的跨平台可能性
在今日,更多时候代表了软件开发的架构 //转载请注名出处 http://www.52mvc.com/java/list.aspx开发者版本发表时是以Java DevelopmentKits名称发表,简称JDK
J2SE 5.0(Java 2 Platform Standard Edition5.0)时的JDK称为J2SE Development Kit 5.0
J2SE 5.0(Java 2 Platform Standard Edition5.0)时的JDK称为J2SE Development Kit 5.0
从JavaSE 6(Java Platform, Standard Edition6)开始的JDK6则称之为Java SE Development Kit 6
不再带有“2”这个号码,版本号6或1.6.0都使用
6是产品版本(product version),而1.6.0是开发者版本(developer version)
2.Java的特性
语言特性:
简单(Simple)
面向对象(Object-oriented)
网络(Network-savvy)
解释的(Interpreted)
坚固(Robust)
安全(Secure)
可携(Portable)
高效能(High-performance)
(1).简单(Simple)
C/C++的强大功能是大家所皆知的,即使在众多程序语言的竞争之下,C/C++仍旧在开发软件的程序语言中占有相当的地位,然而学习或使用C/C++并不容易。很多时候开发人员并不需要使用到C/C++的一些功能,但为了使用C/C++却得付出相当的学习成本、开发成本或维护成本。设计Java的成员们以长年的开发经验判断,在使用一些C/C++的功能时,所得到的坏处可能多于好处(尤其是被一些没有经验的开发人员使用时),所以Java舍弃了C/C++中一些较少使用、难以掌握或可能不安全的
功能,像指针(Pointer)、运算符重载(Operator Overloading)和多重继承(Multiple Inheritance)等。Java除去一些C/C++复杂或不安全的功能,并在许多开发人员常使用的特性上加以简化而使之易于使用。例如字符串在Java中的处理就更为简单;Java在设计时参考了许多C/C++的语法与特性,使得学习过C/C++的开发人员可以在短时间内了解如何使用Java。
(2)面向对象(Object-oriented)
面向对象分析(Object-Oriented Analysis)是分析问题的一种方式,面向对象设计(Object-Oriented Design)是使用面向对象的思考方式来设计问题的解决方案。但是,要了解什么是面
向对象,以及学会使用面向对象的方式进行设计与解决问题,并不是一件简单的事情,事实上让您了解面向对象正是这本书的目标之一。您先不用急于了解什么是面向对象,在后面的章节中会逐渐以实际的例子让您体会什么是面向对象。现阶段您所要了解的是,Java支持面向对象的设计方式。简单地说,Java让您可以用面向对象的思考方式来设计并编写程序。面向对象的好处之一,就是可以让您设计出可重用的组件,或者是直接使用别人所编写好的Java组件,并使开发出来的软件更具弹性且容易维护。
(3)网络(Network-savvy)
Java本身等于就是通过网络而产生的,它的许多功能与应用都与网络相关,从最初的Applet、简化的Socket、交互式的JSP/Servlet网络程序到今日热门的Web Service等,都注定了Java在网络相关的领域占有一席之地。事实上,Java应用最多的领域也正是网络服务这一块。
(4)解释的(Interpreted)
您要先知道一件事,程序在一个平台上要能够运行,必须先编译为该平台所能理解的原始机器语言(Native Machine Instructions),但最大的问题在于每个平台所认识的机器语言各不相同。例如Windows操作系统认识的机器语言就与Linux认识的不相同,专为Windows操作系统所编写并编译好的程序,并无法直接拿来在Linux操作系统上运行。为了解决在不同平台间运行程序的问题,Java的程序在进行编译时,并不直接编译为与平台相对应的原始机器语言,而是编译为与系统无关的“字节码”(Bytecodes)。为了要运行Java程序,运行的平台上必须安装有JVM(Java Virtual Machine),JVM等于是为Java程序所虚拟的环境。当运行Java程序时,Java实时编译器(Just In
Time Compiler,JIT)会将字节码编译为目标平台所接受的原始机器语言,通过JVM使得Java程序在不同平台上都能运行的目的得以实现
(5)健壮的(Robust)
Java将C/C++中一些功能强大但不容易掌握的功能去除了。以指针(Point)功能为例,即使是有经验的开发人员在使用指针功能时也得小心翼翼,避免编写出使程序崩溃(Crash)的错误,诸如此类的功能在Java中被去除,为的是让Java在使用时更为简单,编写出来的程序更为健壮。舍弃了C/C++的一些特性曾使得许多开发人员质疑没有了C/C++的这些特性,Java还能开发什么软件?但从Java正式提出至今10年来已经证明,Java确实适用于开发各个领域的软件,而且拥有广大的网络资源。
(6)安全(Secure)
Java加入了垃圾回收(Garbage Collection)机制,让开发人员无需担心对象资源的回收问题,异常(Exception)处理架构让开发人员可以掌握程序中各种突发的异常状况。另外,像synchronized、final等存取关键词的使用,目的都在于加强Java程序的安全性。
(7)可移植的(Portable)
要让程序跨平台运行并不是一件容易的事,有相当多的因素必须考虑,例如数据类型所占内存长度就是一个问题,Java在不同的平台上的数据类型长度是统一的(而C/C++则不然)。这是Java在提高程序可移植性上最显而易见的一个例子。
(8)高效能(High-performance)
高性能是Java所宣称的,在某些条件的配合下,Java号称可以与C/C++拥有同样甚至更好的运行性能,但更多的人只是将这个宣称视为一个商业宣传的口号。Java是在运行时期才将中间的字节码编译为原始机器语言,这就花上了一段不短的启动时间,而早期的Java在运行性能上确实是一直被诟病的。不过在历经数个版本的变更,Java一直尝试提高其运行的性能,像使用Java HotSpot技术。
在第一次加载Java字节码时,JIT会以编译模式开始加载,分析并尝试以最佳化编译为目标平台的原始机器语言。每一次的版本更新,Java皆尝试在性能上做出改进。
(9)应用平台
Java SE(Java标准平台)
Java Platform, Standard Edition
Java EE(Java企业级平台)
Java Platform, Enterprise Edition
Java ME(Java微系统平台)
Java Platform, Micro Edition
(10)Java SE
为了能运行Java所编写好的程序,您的平台上必须有Java虚拟机(Java Virtual Machine, JVM)。 JVM包括在Java运行环境(JavaRuntime Environment, JRE)中,所以为了要运行Java程序,您必须
取得JRE并进行安装。如果要开发Java程序,则必须取得JDK(J2SEDevelopment Kits),JDK包括了JRE以及开发过程中所需要的一些工具程序,像javac、java、appletviewer等工具程序(关于JRE及JDK的安装与使用介绍,会在第2章说明)。Java语言只是J2SE的一部分,除了语言之外,Java最重要的就是它提供了庞大且功能强大的API类库,提供像字符串处理、数据输入/输出、网络组件、使用者窗口接口等功能。您可以使用这些API作为基础来进行程序的开发,而无须重复开发功能相同的组件。事实上,在熟悉Java语言之后,更多的时候,您都是在学习如何使用J2SE所提供的API来组成您的程序。
(11)Java Platform, Standard Edition (Java SE)
J2SE可以分为4个主要的部分:JVM、JRE、JDK与Java语言。
JVM
Java虚拟机(Java Virtual Machine,JVM)
JRE
Java执行环境(Java SE Runtime Environment,JRE)
JDK
Java语言
(12)随着Java的应用领域越来越广,并逐渐涉及各级应用软件的开发,Sun公司在1999年6月美国旧金山的Java One大会上,公布了新的Java体系架构。该架构根据不同级别的应用开发区分了不同的应用版本:J2SE、J2EE与J2ME。J2EE以J2SE为基础,定义了一系列的服务、API、协议等,适用
于开发分布式、多层式(Multi-tiered)、以组件为基础、以Web为基础的应用程序。整个J2EE的体系是相当庞大的,比较为人所熟悉的技术像JSP、Servlet、Enterprise JavaBeans(EJB)、Java Remote Method Invocation(RMI)等,其中的每个服务或技术都可以通过专门的一本书进行介绍,所以并不是本书说明的范围,但可以肯定的是,您必须在J2SE上奠定良好的基础再来学习J2EE的开发。
以JavaSE的基础,定义了一系列的服务、API、协定等
适用于开发分布式、多层式(Multi-tiered)、以组件为基础、以Web为基础的应用程序
技术像是JSP、Servlet、Enterprise JavaBeans(EJB)、Java Remote Method Invocation(RMI)等
J2ME是Java平台版本中最小的一个,目的是作为小型数字设备上开发及部署应用程序的平台,像消费型电子产品或嵌入式系统等。最为人所熟悉的设备如手机、PDA、股票机等,在近几年已经相当常见J2ME的应用,越来越多的手持设备都支持J2ME所开发出来的程序,像Java游戏、股票相关程序、记事程序、月历程序等。
作为小型数字设备上开发及部署应用程序的平台,像是消费性电子产品或嵌入式系统等最为人所熟悉的设备如手机、PDA、股票机等.
(13)活跃的社群与丰富的资源
开发工具
开放原始码的组件
容器
测试工具
各式各样的软件专案
各个社群所支持的讨论区
取之不尽的文件
(14)如何学习Java
奠定Java语法基础
运用基本的JavaSE API
字符串处理、例外处理、对象容器(Container)、输入输出(I/O)、线程(Thread)
http://java.sun.com/javase/6/docs/api/index.html
使用搜索引擎
http://www.google.com/