• 1. Java 语言程序设计教程Write once, run anywhere 南京理工大学计算机系赵学龙 zhaoxuelong@gmail.com
  • 2. 课程内容第一章 Java入门Java发展简史和Java的11个特征, jdk第二章 Java语言概述介绍Java语言的主要特性第三章 标记、运算符和表达式介绍Java语言的命令式成分第四章 控制流引导程序执行顺序的控制流语句第五章 类和对象介绍用于实现“封装”的Java机制:类和方法第六章 类的扩展介绍类的“继承”,即扩展。以一个现成的类为基础,根据自己的需要进行修改第七章 接口如何使用“接口”概念,充分运用Java的面向 对象编程机制第八章 异常提供检测错误且使程序代码清晰的方式第九章 字符串String、StringBuffer类和字符串转换方法第十章 线程Thread类及其线程的创建和使用第十一章 包包的命名、包的访问和包的内容第十二章输入输出包IO与util学习Java为IO提供的各种类
  • 3. 课程内容第一章 Java入门Java发展简史和Java的特征, jdk第二章 Java语言概述介绍Java语言的主要特性第三章 标记、运算符和表达式介绍Java语言的命令式成分第四章 控制流引导程序执行顺序的控制流语句第五章 类和对象介绍用于实现“封装”的Java机制:类和方法第六章 类的扩展介绍类的“继承”,即扩展。以一个现成的类为基础,根据自己的需要进行修改第七章 接口如何使用“接口”概念,充分运用Java的面向 对象编程机制第八章 异常提供检测错误且使程序代码清晰的方式第九章 字符串String、StringBuffer类和字符串转换方法第十章 线程Thread类及其线程的创建和使用第十一章 包包的命名、包的访问和包的内容第十二章输入输出包IO与util学习Java为IO提供的各种类
  • 4. 1.1 Java是什么 1.2 Java的历史 1.3 Java资源 1.4 Java的特性 1.5 Java的执行架构 1.6 Java成功案例第一章 Java入门
  • 5. Java是美国Sun Microsystems(太阳微系统公司)提出的一种面向对象的程序设计语言。 Java的特点在于其强大的移植能力、多线程处理和连网能力。 Java被称为网络上的世界语,“一次编程到处使用”。适合互联网的发展需求。 Java=“C++” – “复杂性和奇异性”+“安全性和可移植性”。 Java的突出优点包括: 与平台无关的“运行时间”(Run Time)库:在Windows95/98、NT、Solaris、Unix、Macintosh以及其他平台上,都可以使用相同的代码。这一点对互联网编程来说,至关重要。 Java的语法与C++类似,学习效率高,易于从C++过渡到Java。 Java比C++更易写出无错误的代码。 Java消除了人工分配内存及取消分配内存的必要。Java中的内存自动回收(垃圾收集)。避免内存忘记释放或多次释放。 Java引入了真正的数组,取消了指针运算。 取消了多重继承,利用新型接口概念实现同等功能。 1.1 Java是什么
  • 6. 面向对象的程序设计语言的发展历程Computer硬件软件操作系统应用软件数据库系统应用服务器
  • 7. 面向对象的程序设计语言的发展历程1946年2月15日 汇编语言 1956年 ,Hopper自然语言 结构化程序设计 1966年, 人工智能发展出面向对象的概念重达30吨的庞然大物,由19000多个晶体管、1500多个继电器组成。 助记符来减轻二进制编码的开发压力。 计算机商用语言COBOL(COmmon Business Oriented Language)的诞生 Niklaus Wirth ,获得了1984年的图灵奖。PASCAL
  • 8. Alan Kay设计了世界上第一个完全面向对象的语言Smalltalk并成为2003年图灵奖得主。 Bjarne Stroustrup明智地把面向对象和最流行的C语言结合而开发了有史以来取得最大成功的C++语言。 Anders Hejlsberg把PASCAL的面向对象版本Object PASCAL结合构件的思想开发出Windows平台上最优秀的快速程序开发(RAD)工具之一Delphi。 C#之父。 James Gosling结合Internet背景开发了Java语言。面向对象的程序设计语言的发展历程
  • 9. Alan KaySmalltalk可以说是目前主流语言C++,Java和C#的前身。也正是Alan Kay 发明了“Object Oriented”这个术语。1972年,他来到施乐PARC(帕罗奥托研究中心,1970年建立),开始将Smalltalk作为一种儿童教育工具。在PARC期间他还与同事构建了最早的图形界面个人电脑Alto,成为Machitosh和Windows的先驱。
  • 10. Bjarne Stroustruphttp://www.research.att.com/~bs/homepage.html C++之父。出生于丹麦的第二大城市奥尔胡斯,1975年获奥尔胡期大学计算机系硕士学位。此后,Bjarne在剑桥大学计算机实验室研究分布式系统的设计,并于1979年获得剑桥大学博士学位。 1979年,Bjarne Stroustrup进入贝尔实验室计算机研究中心,并搬到新泽西。自从AT&T实验室成立,一直在AT&T工作。Bjarne Stroustrup 设计并实现了C++语言。1993年,由于在C++领域作出的巨大贡献,荣获了ACM的Grace Murray Hopper(女计算机科学家赫柏)奖并成为ACM院士。
  • 11. Anders Hejlsberg丹麦人,曾在丹麦科技大学学习工程学。Borland创始人之一,Turbo Pascal系列以及Delphi前三个版本的主构架师,Delphi之父。1996年加盟微软负责J++,WFC等项目,C#语言以及.net框架主构架师及设计者,C#之父。
  • 12. James GoslingJames Gosling于1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡耐基-梅隆大学计算机科学博士学位。Gosling现任Sun公司全球副总裁兼高级研究员。 他创建了卫星数据获取系统,Unix的多处理器版本,若干编译器、邮件系统和视窗管理器。在Sun公司他开始了Java编程语言的最初设计,并完成了Java技术的原始编译器和虚拟机。
  • 13. 1991年,Sun Microsystems开展“Green project”(绿色项目),研究人员认为计算机技术发展的一个趋势是数字家电之间的通讯。James开始负责为设备(如烤箱 )和用户之间的交流创建一种能够实现网络交互的语言。由于内存、功能不充分,要求开发的语言具备如下特性: 语言必须尽可能小 生成非常紧凑的代码 中央处理器满足多样性 语言不能受限于一种独立的体系结构 面向对象 Sun公司的设计师James Gosling定义了满足上述需求的一种新的语言Oak(Java的前身),但Oak已经成为一种计算机语言的名称,因此改为Java。 1994年Internet兴起,Mosaic非商业的浏览器; 发现Java语言可使静态网页->动态网页。 将研制的“技术实验品”,于1995年5月23日召开的SunWorld’95大会上展示, 分子结构图标->点击->下载Java小程序,本地执行->分子图像以三维动画方式旋转 引发了Java热, 这款浏览器最终发展成目前的HotJava浏览器。1.2 Java的历史
  • 14. Java的大流行自1995年秋季开始,当时Netscape决定使他们的新版Netscape(Netscape2.0)具有Java能力,并自这一版开始,所有Netscape浏览器都提供对Java的支持。注册Java许可证的还有IBM、Symantec、Insprise和其他许多公司。 Sun Microsystems开发的Java历史: 1995年5月23日,Java语言诞生 1996年1月,第一个JDK-JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 。同年5月,第一届JavaOne会议在旧金山召开。 1997年2月18日,JDK1.1发布 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录 1998年12月8日,JAVA2企业平台J2EE发布 1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SE、J2EE、J2ME) 2000年5月8日,JDK1.3发布 2000年5月29日,JDK1.4发布 2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机 2001年9月24日,J2EE1.3发布 2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。 2004年9月30日18:00PM,J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0 2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。 2006年5月,JavaOne大会召开,网格计算Sun Grid Compute Utility ;JXTA 技术应用(P2P);Squawk:用于无线传感器设备的Java VM等技术。 1.2 Java的历史
  • 15. 网站资料 书籍1.3 Java资源
  • 16. Java主页-------http://java.sun.com(http://www.oracle.com/technetwork/java/index.html) Java Applet的网站---http://www.gamelan.com 常规问答页------http://www.www.net.com/java/faq Java资源网站-----http://www.javasoft.com Java爱好者讨论园地--http://www.javalobby.org Java开发者论坛----http://www.chinajavaworld.com/ Java World------http://www.javaworld.com Java白皮书------http://java.sun.com/docs/white/langenv/ IBM的Java网站----http://www.ibm.com/java1.3 Java资源-网站资料
  • 17. Java编程思想(Thinking in Java) Java2核心技术 卷I:基础知识 Java2核心技术 卷II:高级特征 Java2编程详解 Special Edition Using Java2 The Complete Java 2 Certification Study Guide, Java认证考试参考书籍 1.3 Java资源-书籍
  • 18. 1.4.1 简单 (Simple) 1.4.2 面向对象 (Object Oriented) 1.4.3 分布式 (Distributed) 1.4.4 健壮性 (Robust) 1.4.5 安全性 (Secure) 1.4.6 结构中立 (Architecture Neutral) 1.4.7 可移植性 (Portable) 1.4.8 解释型 (Interpreted) 1.4.9 高性能 (High Performance) 1.4.10 多线程 (Multithreaded) 1.4.11 动态 (Dynamic)1.4 Java的特性
  • 19. Java语法是C++语法的精简、清错版本。1.4.1 Java的特性-简单Java相对于C++去掉了 Java增强的新机制指针对象引用 (Object reference)操作符重载内存自动管理 (garbage collector)多重继承接口类型 (interface)头文件(#include)包 (package)(import)去掉goto语句异常 (exception)结构多线程 (multi-thread)联合远程方法调用模板安全性类型自动转换类型强制转换软件体系结构EJB(企业级计算)
  • 20. 重点放在对象以及对象的接口上。 以木匠为例: “面向对象”的木匠,注重自己正在做的椅子,其 次考虑用来制造它的工具。 “非面向对象”的木匠,主要考虑自己的工具。1.4.2 Java的特性-面向对象现实生活中的对象class Car { int color_number; int door_number; int speed; void brake() { … } void speedUp() {…}; void slowDown() { … } } 对象的原型
  • 21. Java提供包容广泛的例程库,可处理像HTTP和FTP这样的TCP/IP协议; Java应用程序通过URL(统一资源定位器),来打开及访问对象,就像访问本地文件系统一样简单; 提供Servelt(服务器小应用程序)机制,使得Java进行服务器端编程时,可获得非常高的效率; Java语言提供与Socket(套接字,是TCP/IP协议提供的编程接口)有关的系统类,方便网络编程,包括InetAddress类(保存Internet上的IP地址的类)、DatagramSocket类(发送数据报的类)和ServerSocket类(帧听到来的连接,并为每个新连接创建一个Socket对象。 远程方法调用(RMI)机制可实现分布式对象间的通信。 1.4.3 Java的特性-分布式
  • 22. Java的目的是不管在何种条件下,都能保证编程绝对可靠。其将重点放在早期的潜在问题检查、以后的动态(运行时间)检查上面。 Java与C++最大的区别是Java消除了指针带来的改写内存、毁损数据的可能性。1.4.4 Java的特性-健壮性
  • 23. Java被设计用于连网和分布式的环境中,因此安全性是一个很重要的考虑。当前的Java版本已经实现了下述功能: Java是强类型语言,防止了恶意代码的入侵; 即变量在编译和运行时的类型是一致的。这也意味着类型转变在编译和运行时都要检查是否合法。 如恶意代码不可能将一个文件对象类型A转变为它自己定义的文件对象类型B,其中文件对象类型B的结构与A完全相同,不同的只是B中的方法都是公共的。 防止侵占运行时间堆栈(蠕虫病毒的特点); 当被有安全性限制的类装载调用时,防止读写本地文件; 引入签名类(Signed class),作者签名可享有更高权限。1.4.5 Java的特性-安全性
  • 24. 只要有Java运行时刻系统存在,编译后的字节码可在许多处理器上运行。1.4.6 Java的特性-结构中立硬件,CPU,体系结构源文件编译目标文件连接可执行文件运行系统平台OSBIOS编译器连接器.c/.cpp.obj.exe硬件,CPU,体系结构源文件编译字节码文件运行系统平台OSBIOS编译器Java Virtual Machine(JVM)平台适配器解释器.java.class平台规范
  • 25. 在JAVA中,基本数据类型所分配的字节数总是确定的。Java中的int肯定是个32位的整数。 而在C/C++中,不同的平台上,编译器对数据类型分配的字节数是不同的。16位机,32位机,64位机,分配的字节数都是不一样的。 1971年,英特(intel)公司利用4位微处理器intel4004组成了世界上第一台微机。 1972年,英特(intel)公司又利用8位微处理器intel8008组成了第一台8位微机。 1983年,PC/XT中央处理器是8088,16位机。已经开始支持硬盘,使用的硬盘容量是360KB,也就是360×1024×8个二进制位。 1984年,PC/AT中央处理器是80286,16位机。使用的硬盘容量是1.2MB,也就是1.2×1024×1024×8个二进制位。 1987年,386PC中央处理器是80386,32位机。 1991年,486PC中央处理器是80486,一次可处理32位的信息。 1993年,PentiumPC中央处理器是80586,一次可处理64位信息。 1996年,PentiumⅡPC中央处理器是80686MMX,一次可以处理64位的信息。 1.4.7 Java的特性-可移植性
  • 26. Java虚拟机可在任何机器上有效地执行Java字节码。因此节省了程序连接的时间,有助于缩短程序的开发过程。 但JDK编译器的运行并不快,商业编译器如Visual Cafe和VJ 都提供了更快的速度。1.4.8 Java的特性-解释型
  • 27. “准实时”(Just-in-Time)编译器能将字节码编译成本地的机器代码,以较高的速度执行。 可检测执行频繁的代码,并对其进行适当优化,进一步加快速度。1.4.9 Java的特性-高性能Java 解释器Just-in-time 编译器实时运行的系统操作系统低层硬件字节码
  • 28. 一个程序可同时进行多项工作,提供了更好的交互响应和实时特性。 调用多线程的方式相同,但是多线程的实现移交给后台OS。 线程的创建和使用涉及Thread类。1.4.10 Java的特性-多线程
  • 29. Java比C或C++语言更具有动态性,更能适应不断变化发展的环境。Java不会因程序库的更新,而重新编译程序。 例如,可从Internet上下载代码,然后在浏览器中运行。1.4.11 Java的特性-动态
  • 30. 1.5 Java的执行架构硬件平台Java虚拟机(Java Virtual Machine)字节码(Bytecode)Java应用程序编程接口( API)Java 应用程序Java Applet
  • 31. Tomcat Jbuilder, Eclipse, ArgoUML Columba:email客户端 HSQLDB:数据库 MCKoi Database:数据库 FreeCol:开源游戏。1.6 Java成功案例