Java是什么.ppt
Java简介,Java是什么,Java技术是由美国Sun公司倡导和推出的,它包括Java语言和各类开发平台及工具Java Media APIsSecurity APIsManagement APIsJava AppletJava RMIJavaBeanJavaOSJava ServletJava Server Pages(JSP)JDBC等,Java的历史,Java来自于 Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统这样可以把 E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始准备采用 C+,但 C+太复杂,安全性差,最后基于C+开发一种新的语言Oak(Java的前身)。Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果被 SGI打败。于是Oak几乎无家可归,面临下马,Java的历史,时来运转,天赐良机,Internet时代来临 正当这个小组快要被SUN裁撤时,全世界第一个全球资讯网浏览器-Mosaic诞生了Mark Ardreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官Scott McNealy的支持,触发了Java进军Internet,Java之父 James Gosling,Java的大事记,1990年,Sun公司James Gosling领导的小组设计了一种平台独立的语言 Oak.主要用于为各种家用电器编写程序 1995年 1月,Oak被改名为Java 1995年 5月23日,Sun公司在 Sun World95上正式发布Java和Hotjava浏览器。1995年8月至12月,Netscape公司、Oracle公司、Borland公司、SGI公司、Adobe公司、IBM 公司、AT&T公司、Intel公司获得 Java许可证。Sun公司宣布允许苹果电脑、HP、日立、IBM,Microsoft,Novell,SGI.SCO.Tamdem等公司将Java平台嵌入到其操作系统中。,Java的大事记,1996年5月,HP公司、Sybase公司获得Java许可证。北方电讯公司宣布把Java技术和 Java微处理器应用到其下一代电话机中的计划。5月29日,Sun公司在旧金山举行第一届JavaOne世界Java开发者大会,业界人士踊跃参加。Sun公司在大会上推出一系列Java平台新技术。1996年8月,Java WorkShop成为Sun公司通过互联网提供的第一个产品。1996年9月,Addison-Wesley和Sun公司推出Java虚拟机规范和Java类库。,Java的大事记,1996年 10月,德州仪器等公司获得Java许可证。Sun公司提前完成JavaBean规范并发布,同时发布第一个Java JIT(Just-In-Time)编译器,并打算在Java WorkShop 和Solaris操作系统中加人JIT。10月29日,Sun公司发布Java企业计算技术,包括JavaStation网络计算机、65家公司发布的 85个Java产品及应用、7个新的Java培训课程及 Java咨询服务、基于 Java的 Solstice互联网邮件软件、新的 Java开发者支持服务、Hodava Views演示、Java Tutor,Java Card API等。Sun公司宣布完成Java Card API规范,这是智能卡使用的第一个开放 API.Java Card规范将把 Java能力赋予全世界亿万张智能卡。,Java的大事记,1996年 11月,IBM 公司获得 JavaOS和 HotJava许可证。Novell公司获得 Java WorkShop许可证。Sun公司和 IBM公司宣布双方就提供 Java化的商业解决方案达成一项广泛协议,IBM 公司同意建立第一个 Java检验中心。1996年 12月,Xerox等公司获得Java或JavaOS许可证。Sun公司发布JDK 1.1、Java商贸工具包、JavaBean开发包及一系列 Java APIs;推出一个新的 JavaServer产品系列,其中包括 Java Web Server,Java NC Server和 JavaServer Toolkit,Sun公司发布 100纯 Java计划,得到百家公司的支持。,Java的大事记,1997年 1月,SAS等公司获得Java许可证。Sun公司交付完善的JavaBean开发包,这是在确定其规范后不到 8个月内完成的。1997年2月,Sun公司和ARM公司宣布同意使 JavaOS运行在 ARM公司的 RISC处理器架构上。Informix公司宣布在其 Universal Server和其他数据库产品上支持JDK 1.1,Netscape公司宣布其 Netscape Communicator支持所有 Java化的应用软件和核心APIs.,Java的大事记,1997年3月,HP公司获得Java WorkShop许可证,用于其HP-UX操作系统。西门子 AG公司等获得 Java许可证。日立半导体公司、Informix公司等获得 JavaOS许可证。Novell公司获得Java Studio许可证。Sun公司发售 JavaOS 1.0操作系统,这是一种在微处理器上运行 Java环境的最小、最快的方法,可提供给 JavaOS许可证持有者使用)Sun公司发售 HotJava Browser 1.0,这是一种 Java浏览器,可以方便地按需编制专用的信息应用软件,如客户自助台和打上公司牌号的网络应用软件 1999年 6月、Sun公司发布JSP 1.0,同时推出JDK 1.3和Java Web Server 2.0,Java的大事记,1999年 11月,Sun公司发布JSP 1.1,同时推出JSWDK 1.0.1和Java Servlet 2.2 02000年 9月,Sun公司发布 JSP 1.2和Java Servlet 2.3 API.2006年,Sun公司发布jdk 6.0版本并宣布java也开放源码,7.0也正式进入研发。,Java语言的特点,Java是一种简单的、面象对象的、分布式、解释型的、健壮、安全、具有跨平台能力、可移植的、高性能的、多线程、动态的程序设计语言,Java语言的特点-简单,Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java语言的简单性主要体现在以下 3个方面:Java的风格类似于 C+,从某种意义上讲,Java语言是 C及 C+语言的一个变种,C+程序员可以很快掌握Java编程技术。Java摒弃了C+中容易引发程序错误的地方,如指针和内存管理。Java提供了丰富的类库(class library)。,Java语言的特点-面向对象,Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似 C语言那样的面向过程的程序设计技术。Java支持代码继承及重用。,Java语言的特点-分布式,Java包括支持 HTTP和 FTP等基于 TCP/IP协议的程序库。Java应用程序可凭借 URL打开并访问网络上的对象访问方式与访问本地文件系统几乎完全相同。,Java语言的特点-健壮,Java致力于检查程序在编译和运行时的错误。类型检查可帮助程序员检查出许多开发早期出现的错误。(java是强类型语言!)Java自已操纵内存,减少了内存出错的可能性。(禁止程序员操作内存,不像C/C+),Java语言的特点-结构中立,Java能够将它的程序编译成一种结构中立的中间文件格式,只要有 Java运行系统(java VM 虚拟机)的机器都能执行这种中间代码。Java源程序可被编译成一种高层次的、与机器无关的bytecode(字节码)格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。一次编写,到处运行!,Java语言的特点-安全,在 Java语言里,像指针和申请、释放内存等 C+功能被删除,避免了非法内存操作。而在装载类时,类装载器通过将本机类与网络资源类的名称分开来保持安全性。,Java语言的特点可移植,同体系结构无关的特性使得 Java应用程序可以在配备了 Java解释器和运行环境的任何计算机系统上运行为Java应用软件的移植奠定了良好基础。,Java语言的特点-解释运行,Java解释器能直接运行目标代码指令。链接程序通常比编译程序所需资源少但这也是java较c程序慢的一个原因如直接交流与经过翻译交流的差别,Java语言的特点-高性能,如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令。Sun的直接解释器 1秒钟内可调用300,000个过程。翻译目标代码的速度与C/C+的性能没什么区别。别信广告,看实效!,Java语言的特点-多线程,Java的多线程功能使得在一个程序里可同时执行多个小任务。如网上音频、视频播放,边下载边播放下载软件,如网络蚂蚁,网际快车等,同时开启多个下载任务,平台(Platform)程序运行的硬件和软件环境操作系统平台Windows 2000、Linux、Solaris、MacOS操作系统与硬件的结合Java运行平台(Platform)Java虚拟机(Java Virtual Machine,Java VM)Java解释器Java开发工具或可运行applet的Web浏览器 Java应用编程接口(Java Application Programming Interface,Java API),平台(Platform),Java运行平台(Platform)JavaSE Platform(Java Platform Standard Edition)Java Runtime Environment(JRE)Java虚拟机、库函数、运行Java应用程序和Applet所必须文件Java SDK(Development Kit)JRE的超集,包含编译器和调试器等用于程序开发的文件Java虚拟机、Java应用编程接口和系统平台的关系,Java运行平台(Platform),Java平台的发展Java Development Kit1.0.21.1.1 1.1.6 1.1.7 1.1.81.2.1Java 2 SDK1.2.21.3.0 1.3.11.4.0 1.4.1 1.4.21.5.0 Java SDK5.06.0 7.0Java平台的三个版本(1999.6):JavaSE/JavaEE/JavaME,Java平台的发展,基本:Objects,strings,threads,numbers,input and output,data structures,system properties,date and time等 Applets应用网络应用:实现基于URL/TCP/UDP的网络应用国际化应用:实现程序的本地化,并以适当的语言显示安全应用:电子签名、公钥和私钥管理、访问和控制用户证书等软件构件:JavaBeans对象串行化:实现远程方法调用(Remote Method Invocation,RMI)Java数据库连接(Java Database Connectivity,JDBC):提供统一的方式访问关系型数据库,Java可以做什么?,简单易学(Get started quickly)写较少的代码(Write less code)写更好的代码(Write better code):garbage collection(防止内存泄漏),面向对象、JavaBeans构件机制、其他API复用代码,减少bugs开发程序更快(Develop programs more quickly)避免平台依赖性(Avoid platform dependencies with 100%Pure Java)编写一次,随处运行(Write once,run anywhere)machine-independent bytecodes发布软件更容易(Distribute software more easily):指对软件的更新,利用动态加载功能,一处改动,自动更新,不用重新编译整个程序,为什么选择Java?,Java程序的种类,Java小应用程序(Java Applet)在Web浏览器中运行(内嵌Java虚拟机)特定标记 Java应用程序(Java Application)独立的Java程序程序入口方法:public static void main(String args)Java Script嵌入在HTML文件中的脚本语言特定标记 Netscape引入javascript,简单的Java应用程序,Java源程序文件扩展名为“.java”Java字节码程序文件扩展名为“.class”/*Exam1_1 class实现一个应用*将特定的字符串显示到标准输出*/public class Exam1_1 public static void main(String args)System.out.println(“This is a Java Application Program.);,定义类文件关键词public 修饰符关键字class表示要定义一个类(模板),包含数据变量和方法关键字import表示引入程序外部定义的类/*Exam1_1 class实现一个应用*将特定的字符串显示到标准输出*/import java.lang.System;public class HelloWorld1 public static void main(String args)System.out.println(“This is a Java Application Program.”);,简单的Java应用程序,定义类文件类名称与Java源程序名一致class MyClass.所保存的文件为:MyClass.java注意:大小写敏感,简单的Java应用程序,注解方式(Comments)/*/文档注解/*/程序内的任意位置/对本行注解/*Exam1_1 class实现一个应用*将特定的字符串显示到标注输出*/public class Exam1_1 public static void main(String args)System.out.println(“This is a Java Application Program.);,简单的JAVA应用程序,主方法(main Method)每个Java应用程序必须有且只能有的一个方法,程序执行的入口格式固定/*Exam1_1 class实现一个应用*将特定的字符串显示到标注输出*/public class Exam1_1 public static void main(String args)System.out.println(“This is a Java Application Program.);,简单的Java应用程序,类和变量的引用类(java.lang.System),System类的一个变量out变量out是PrintStream类的一个实例,PrintStream类实现标准输出流引用实例out的方法println()变量和方法的引用通过“.”实现public class Exam1_1 public static void main(String args)System.out.println(“This is a Java Application Program.);所有的Java类默认都引入java.lang.*,简单的Java应用程序,书写规范花括号对“”类、方法语句分号“;”结尾对齐和缩进区分大小写/*Exam1_1 class实现一个应用*将特定的字符串显示到标准输出*/public class Exam1_1 public static void main(String args)System.out.println(“This is a Java Application Program.);,简单的Java应用程序,简单的Java小程序(Applet),引入类和包引入特定的类(Class)import java.applet.Applet;import java.awt.Graphics;public class HelloWorld extends Applet public void paint(Graphics g)g.drawString(Hello world!,50,25);引入整个包(Package)import java.applet.*;import java.awt.*;,类的定义 定义一个公共类HelloWorld该类是Applet类的子类,关键词“extends”import java.applet.Applet;import java.awt.Graphics;public class HelloWorld extends Applet public void paint(Graphics g)g.drawString(Hello world!,50,25);,简单的Java小程序(Applet),方法定义 重写父类Applet的paint方法参数g是Graphics类的一个实例,表示当前作画的上下文引用g的方法drawString(),在坐标(50,25)处输出字符串 import java.applet.Applet;import java.awt.Graphics;public class HelloWorld extends Applet public void paint(Graphics g)g.drawString(Hello world!,50,25);,简单的Java小程序(Applet),Java程序运行环境,Java开发工具(Java Development Kit,JDK),J Java SDKJava API工具集基本工具(javac,java,javadoc,appletviewer,jar,jdb,javah,javap,extcheck)远程方法调用工具(Remote Method Invocation,RMI)(rmic,rmiregistry,rmid,serialver)国际化工具(native2ascii)安全工具(keytool,jarsigner,policytool)Java IDL和RMI-IIOP工具(tnameserv,idlj,orbd,servertool)Java插件工具(Plug-in),获得 Java SDK http:/java SDK,Java程序运行环境,系统环境变量设置路径设置(path)DOS/Windows 95/98,autoexec.bat,添加“path c:windows;c:windowscommand;c:jdk6bin”Windows NT/2000,控制面板系统高级环境变量,编辑path选项添加“c:j2sdk1.4.1bin”类路径设置(classpath)DOS/Windows 95/98,autoexec.bat,添加“set classpath=c:jdk6jrelibrt.jar;.”Windows 控制面板系统高级环境变量,添加classpath选项添加“.”,表示在当前目录寻找class文件注:rt.jar-the bootstrap classes(the RunTime classes that comprise the Java platforms core API).引导类,Java程序运行环境,检查Java运行环境设置C:javaUsage:java-options class args.(to execute a class)or java-jar-options jarfile args.(to execute a jar file)C:javacUsage:javac C:java versionjava version 1.4.1_01Java(TM)2 Runtime Environment,Standard Edition(build 1.4.1_01-b01)Java HotSpot(TM)Client VM(build 1.4.1_01-b01,mixed mode),Java程序运行环境,Java应用程序的编译和运行编写源文件Exam1_1.java(内容如前)保存到D盘根目录编译:D:javac Exam1_1.java生成Exam1_1.class文件运行:D:java Exam1_1This is a Java Application Program.问题:(classpath的路径设置)Exception in thread main java.lang.NoClassDefFoundError:,Java程序运行环境,Java小程序的编译和运行编写源文件 HelloWorld.java(内容如前)保存到D盘根目录编译D:javac HelloWorld.java生成HelloWorld.class文件编写HTML文件“Test.html”,保存到D盘根目录 A Simple Program Here is the output of my program:,Java程序运行环境,Java小程序的编译和运行运行用浏览器打开Test.html文件appletviewer Test.html,Java程序运行环境,Java程序的编写、编译和运行,使用命令行工具 Java代码可以使用记事本做编辑器TextPad 或使用集成开发环境NetBeans IDE,这是我们保存的源代码文件C:/MyJava/HelloWorld.java,编译HelloWorld程序,运行HelloWorld程序,这是编译后得到的字节码文件:HelloWorld.class,Java的集成开发环境(IDE),包括:菜单、工具栏、组件面板、窗体设计器、代码浏览器、代码编辑器、项目管理器、对象观察器等,可以完成Java程序的编写、编译和运行,优秀Java开发工具介绍,JBuilder环境开发程序方便,它是纯的Java开发环境,适合J2EE开发。其缺点是过于庞大,不宜上手,新手难于把握整个程序各部分之间的关系;对机器的硬件要求较高,比较吃内存,运行速度显得较慢。Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个Java开发工具(JDT)插件,是全功能的Java IDE。它允许用户编辑、编译和运行Java程序。NetBeans IDE 是Sun公司发布的,也是支持新的J2SE平台6.0版的IDE。Sun公司将该软件和J2SE 6打包在一起,两者可以一并下载和安装,十分方便。它可以完成程序设计、资源重用、代码编译、调试测试等一系列任务。,代码编辑器,项目管理器,对象浏览器,菜单,包资源管理器,大纲,代码编辑器,工具栏,透视图工具栏,代码辅助功能,各种观察窗口,Java程序的基本框架结构,Java程序由一个或多个独立的类组成,但其中必须有一个公有类(如:HelloWorld),而且源代码文件必须与这个公有类的名字相同(如:HelloWorld.java)。Java的类可以由一个或多个方法组成,其中公有类中的main方法可用作程序运行的入口。,/The First Java Programpublic class HelloWorld public static void main(String args)System.out.println(Hello World!);,程序头的注释,HelloWorld类,main方法,修饰符,方法头,方法体,方法名,参数,返回类型,Java程序的编辑、编译和运行过程,Java程序编译通过,会自动生成一个包含了这个源程序字节码的同名.class文件。该文件可以通过Java虚拟机运行。,Java语言中的保留字,撰写规范的程序代码,程序代码质量评审原则:正确性 指程序代码要实现软件设计所要求的功能;可靠性 指程序代码最后编译的程序要能够稳定、可靠、安全的运行;规范化 指程序代码书写的风格、命名规则等要符合规范;可读性 指程序代码要便于查看和理解;灵活性 指程序代码的设计和编写应该易于维护和改动。,/程序说明package 包的名称import 类的名称类修饰符 class 类的名称构造方法类成员:方法(按照以下访问特性次序排列)public protectedprivate protectedprivate 类成员:域(按照以下访问特性次序排列)public protectedprivate protectedprivate 静态变量(即使用 static修饰符的。按照以下访问特性次序排列)public protectedprivate protectedprivate 常量(即使用static final修饰符的),