java HelloWrold
来源:互联网 发布:半实物仿真软件 编辑:程序博客网 时间:2024/06/06 00:28
Java概述
1.1java语言的发展简史
Java起初并非叫做Java,而是叫做Oak。早期是为了嵌入式系统而设计的一项产品。20世纪90年代初期,Sun公司预测微处理器的发展将会对家用电器以及智能化电子消费设备起到决定性的作用,于是,在1990年12月,Sun公司就由Patrick Naughton、Mike Sheridan和James Gosling成立了一个叫做Green Team的小组。其主要目标就是开发一种分布式系统架构,使其能够在智能化电子消费设备作业平台上执行。例如,PDA、手机、信息家电(IA, Internet/Information Appliance)等。一开始,准备采用C++,但C++太过复杂,安全性差。最后,基于C++开发出一种新的语言Oak,Oak是一种用于网络、精巧而安全的语言。
1992年,Green Team发表了一款名叫Star Seven(*7)的机器,它有点像现在我们熟悉的PDA,但市面上的PDA几乎都不是它的对手,更不要说是早在10年前那个计算机还不普及的时代了。Java语言的前身Oak就这样诞生了,主要目的是用来编写在Star Seven上的应用程序。为什么叫Oak呢?原因是James Gosling办公室的窗外,正好有一棵橡树(Oak),就取了这个名字。至于为什么Oak又会改名为Java呢?这是因为在Oak注册商标时,发现已经被另外一家公司使用了。那要取什么新名字呢?工程师们边喝着咖啡边讨论着,看着手中的咖啡,突然灵机一动,就叫Java好了。就这样它就变成了大名鼎鼎、如日中天的Java了。
但是,Green Team的项目发展却不尽如人意。智能化电子消费设备的市场发展远远低于Sun的预期设想。Sun公司曾依此投标一个交互式电视项目,结果被SGI打败了。可怜的Oak几乎无家可归,就在举步维艰,随时会被取消的时刻,情况却发生了巨大变化。1993年,因特网在美国开始大规模的发展,基于因特网的WWW也爆炸性地流行起来。Sun公司发现,Green Team的项目研究成果——Java似乎天生就是为因特网而诞生的,因为恰巧就是Mark Andreessen开发的Mosaic和Netscape启发了Oak,他们利用Java开发了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。
于是,Java第一次以Applet的形式在因特网上出现了。Applet不但使WWW页面显示静态的内容,而且可以显示动态的内容和动画。同时实行了本地计算机,从远程联网的服务器上下载资料并正确地显示出来。这些技术在当时引起了巨大的震撼,促使Java在因特网上得以飞速地发展。1995年5月23日,Sun在SunWorld’95上正式发布Java和HotJava浏览器。
1.2java的体系
(1)j2se(Java 2 Platform, Standard Edition)
Java 2平台标准版,适用于桌面系统应用程序的开发。本书例程就是利用J2SE 5.0版的相关图形API包来开发的。
(2)j2me(Java 2 Platform, Micro Edition)
Java 2平台微型版。Sun公司将J2ME定义为“一种以广泛的消费性产品为目标、高优化的Java运行环境”。自1999年6月在JavaOne Developer Conference上声明之后,J2ME进入了小型设备开发的行列。通过Java的特性,遵循J2ME规范开发的Java程序可以运行在各种不同的小型设备上。
JME 是致力于消费产品和嵌入式设备的开发人员的最佳选择。尽管早期人们对它看好而
且Java 开发人员团体中的热衷人士也不少,然而,JME 最近才开始从其影响更大的同属产
品JEE 和JSE 的阴影中走出其不成熟期。
J2ME 在开发面向内存有限的移动终端(例如寻呼机、移动电话)的应用时,显得尤其实用。
因为它是建立在操作系统之上的,使得应用的开发无须考虑太多特殊的硬件配置类型或操作
系统。因此,开发商也无须为不同的终端建立特殊的应用,制造商也只需要简单地使它们的
操作平台可以支持J2ME 便可。
(3)j2ee(Java 2 Platform, Enterprise Edition)
J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理等相关复杂问题的体系结构。J2EE技术的核心就是Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版的许多优点,例如:“一次编写、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术,以及能够在Internet应用中保护数据的安全模式等,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages),以及XML技术的全面支持。
1.3java的优点
①java语言是简单的。
Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集,大大简化了程序设计者的内存管理工作。Java语言由C语言/C++语言发展而来,语言风格十分类似,易于学习
②java语言是面向对象的。
Java语言提供了简单的类机制以及动态的接口模型,使开发者把设计集中于对象及其接口。对象中封装了成员变量和相应的方法,实现了数据封装和信息隐藏,而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。)③java语言是跨平台的。
④java是高性能的。
⑤java的排名
1.4java技术三大特性
1:虚拟机
Java 虚拟机JVM(Java Virtual Machine)在Java 编程里面具有非常重要的地位,约
相当于前面学到的Java 运行环境,虚拟机的基本功能如下:
(1):通过ClassLoader 寻找和装载class文件
(2):解释字节码成为指令并执行,提供class文件的运行环境
(3):进行运行期间垃圾回收
(4):提供与硬件交互的平台
Java虚拟机是在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储
在 .class文件中;每个文件都包含最多一个public类。Java 虚拟机规范为不同的硬件平台
提供了一种编译Java技术代码的规范,该规范使Java 软件独立于平台,因为编译是针对作
为虚拟机的“一般机器”而做。这个“一般机器”可用软件模拟并运行于各种现存的计算机
系统,也可用硬件来实现。编译器在获取Java应用程序的源代码后,将其生成字节码,它是
为JVM生成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行
applets 的Web浏览器,都可执行JVM。
JVM 为下列各项做出了定义
- 指令集(相当于中央处理器[CPU] )
- 寄存器
- 类文件格式
- 栈
- 垃圾收集堆
- 存储区
JVM 的代码格式由紧缩有效的字节码构成。由JVM 字节码编写的程序必须保持适当的类
型约束。大部分类型检查是在编译时完成。任何从属的Java 技术解释器必须能够运行任何
含有类文件的程序,这些类文件应符合Java 虚拟机规范中所指定的类文件格式。
2:垃圾回收
什么是垃圾
在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程
序来讲就是垃圾。
产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资
源,回收回来,加以再利用,从而节省资源,提高系统性能。
垃圾回收
- 不再需要的已分配内存应取消分配(释放内存)
- 在其它语言中,取消分配是程序员的责任
- Java 编程语言提供了一种系统级线程以跟踪内存分配
- 垃圾收集
- 可检查和释放不再需要的内存
- 可自动完成上述工作
- 可在JVM 实现周期中,产生意想不到的变化
许多编程语言都允许在程序运行时动态分配内存,分配内存的过程由于语言句法不同而
有所变化,但总是要将指针返回到内存的起始位置,当分配内存不再需要时(内存指针已溢
出范围),程序或运行环境应释放内存。
在 C,C++ 或其它语言中,程序员负责释放内存。有时,这是一件很困难的事情。因为
你并不总是事先知道内存应在何时被释放。当在系统中没有能够被分配的内存时,可导致程
序瘫痪,这种程序被称作具有内存漏洞。
Java 编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次
内存的分配情况。在Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内
存。垃圾收集在Java 技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能
够有效避免内存漏洞和内存泄露(内存泄露就是程序运行期间,所占用的内存一直往上涨,
很容易造成系统资源耗尽而降低性能或崩溃)。
提示
(1):在Java 里面,垃圾回收是一个自动的系统行为,程序员不能控制垃圾回收的功
能和行为。比如垃圾回收什么时候开始,什么时候结束,还有到底哪些资源需要回收等,都
是程序员不能控制的。
(2):有一些跟垃圾回收相关的方法,比如:System.gc() , 记住一点,调用这些方法,
仅仅是在通知垃圾回收程序,至于垃圾回收程序运不运行,什么时候运行,都是无法控制的。
(3):程序员可以通过设置对象为null(后面会讲到)来标示某个对象不再被需要了,
这只是表示这个对象可以被回收了,并不是马上被回收。
3:代码安全
Java 如何保证编写的代码是安全可靠的呢?
(1):第一关:编写的代码首先要被编译成为class 文件,如果代码写得有问题,编译期间
就会发现,然后提示有编译错误,无法编译通过。
(2):第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网
络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。
(3):第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的。
(4):第四关:如果你的程序在网络上运行,还有沙箱(Sand Box)的保护,什么是沙箱呢?
就是如果你的程序没有获得授权,只能在沙箱限定的范围内运行,是不能够访问本地资源的,
从而保证安全性。
1.5开发java的准备
在开发java程序之前,必须先安装和配置jdk。
什么是jdk?
①jdk的全称(java Development Kit) java开发工具包。
②jdk是sun公司开发的。
③jdk包括java运行环境、一堆java工具和java基础的类库。
④jdk下载地址http://www.sun.com
⑤安装和配置jdk。
演示配置jdk
1.右键单击我的电脑属性,弹出系统属性对话框
2点击环境变量,弹出系统变量对话框。
3.点击新建,弹出新建系统变量对话框。
在变量名内输入path
在变量值内拷贝jdk的安装路径。(一直到bin文件夹下)
以同样的方式配置classpath、
C:/Program Files/Java/jdk1.5.0_01/lib
注意在classpath前面加上.;点表示当前路径的的意思
4.查看是否配置成功。
在运行内输入cmd命令,回车。
5输入java –version(查看jdk的版本信息)
如果显示java version”1.5.0_01 ”则说明配置成功。
1.6第一个java程序
public class Hello
//pulbic 表示这个类是公共的
//class表示这是一个类
//Hello表示类名,类名必须和文件名保持一致。
{
//一个主函数,相当于程序的入口
public static void main(String args[])
{
//向控制台输出一条语句,相当于c语言的printf
System.out.println("Hello wrold");
}
}
1.6java程序的运行机制
1:编写代码
首先把我们想要计算机做的事情,通过Java 表达出来,写成Java 文件,这个过程就是
编写代码的过程。如上图所示的Hello.java 文件。
2:编译
写完Java 代码后,机器并不认识我们写的Java 代码,需要进行编译成为字节码,编译
后的文件叫做class文件。如上图所示的Hello.class文件。
3:类装载ClassLoader
类装载的功能是为执行程序寻找和装载所需要的类。
ClassLoader能够加强代码的安全性,主要方式是:把本机上的类和网络资源类相分离,
在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。
4:字节码(byte-code)校验
功能是对class 文件的代码进行校验,保证代码的安全性。
Java 软件代码在实际运行之前要经过几次测试。JVM 将代码输入一个字节码校验器以
测试代码段格式并进行规则检查--检查伪造指针、违反对象访问权限或试图改变对象类型
的非法代码。
注意----所有源于网络的类文件都要经过字节码校验器
字节码校验器对程序代码进行四遍校验,这可以保证代码符合JVM 规范并且不破坏系统
的完整性。如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证:
- 类符合JVM规范的类文件格式
- 无访问限制异常
- 代码未引起操作数栈上溢或下溢
- 所有操作代码的参数类型将总是正确的
- 无非法数据转换发生,如将整数转换为对象引用
- 对象域访问是合法的
5:解释(Interpreter)
可是机器也不能认识class 文件,还需要被解释器进行解释,机器才能最终理解我们所
要表达的东西。
6:运行
最后由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。
7:说明
由上面的讲述,大家看到,Java通过一个编译阶段和一个运行阶段,来让机器最终理解
我们想要它完成的工作,并按照我们的要求进行运行。
在这两个阶段中,需要我们去完成的就是编译阶段的工作,也就是说:我们需要把我们
想要机器完成的工作用Java 语言表达出来,写成Java 源文件,然后把源文件进行编译,形
成class文件,最后就可以在Java 运行环境中运行了。运行阶段的工作由Java 平台自身提供,
我们不需要做什么工作。
作业
1:简述java的发展史。
2:简述Java 从代码到运行的全过程
3:简述虚拟机的工作机制
4:简述Java 的垃圾回收机制
5:简述Java 的安全机制
6:简述path、classpath、JAVA_HOME各自的含义和配置方式
- java HelloWrold
- HelloWrold!
- Hellowrold
- struts2 的HelloWrold程序
- servlet的HelloWrold程序
- struts2 的HelloWrold程序
- Spring Boot(1)-HelloWrold
- node.js的HelloWrold
- 我的第二个HelloWrold.
- jquery自学系列一:hellowrold
- Spring-MVC-01-简单的HelloWrold篇
- maven学习-贰-WEB工程之HelloWrold
- 01.Celery 简介、安装和HelloWrold
- EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
- Android[初级] android开发学习之(一)HelloWrold
- springboot学习(一) 初识,环境搭建,helloWrold
- asp.net MVC (1) 浅析MVC及新建Hellowrold
- 简单粗暴的SSM学习——HelloWrold
- 智者与愚者的48个差距
- 使用Gridview插入新记录
- C#中Message Queuing(消息队列)编程技术(二)
- 八叉树
- 做设计应该适当
- java HelloWrold
- glew(2) glewInit
- CONCAT 联合查询
- HTML与XHTML的区别
- GODITKISS
- struts2.0使用中的一个问题
- 完美解读Linux中文件系统的目录结构
- "JSP Semantics Validator (JSF)" 解决办法
- XHTML mp 与XHTML basic 有什么区别?