Java基础——HelloWorld1

来源:互联网 发布:内存 知乎 编辑:程序博客网 时间:2024/06/06 03:01

Java语言历史

1什么是程序设计语言?


程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。


 

2程序设计语言的发展

第一代机器语言

机器语言是由二进制 01 代码指令构成,不同的CPU 具有不同的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。这种语言已经被渐渐淘汰了。

第二代汇编语言

汇编语言指令是机器指令符号化,与机器指令存在着直接的对应关系,所以汇编语言同样存在着难学难用、容易出错、维护困难等缺点。但是汇编语言也有自己的优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高。从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入输出)时,汇编语言才被使用。

第三代高级语言

高级语言是面向用户的、基本上独立于计算机种类和结构的语言。其最大的优点是:形式上接近于算术语言和 自然语言,概念上接近于人们通常使用的概念。高级语言的一个命令可以代替几条、几十条甚至几百条汇编语言的指令。因此,高级语言易学易用,通用性强,应用广泛。高级语言种类繁多,可以从应用特点和对客观系统的描述两个方面对其进一步分类。

  一、从应用角度分类

  从应用角度来看, 高级语言可以分为基础语言、结构化语言和专用语言。

(1) 基础语言

  基础语言也称通用语言。它历史悠久,流传很广,有大量的已开发的软件库,拥有众多的用户,为人们所熟悉和接受。 属于这类语言的有 FORTRANCOBOLBASICALGOL等。FORTRAN语言是目前国际上广为流行、也是使用得最早的一种高级语言,从 20世纪90 年代起,在工程与科学计算中一直占有重要地位,备受科技人员的欢迎。BASIC语言是在 20 世纪 60 年代初为适应分时系统而研制的一种交互式语言,可用于一般的数值计算与事务处理。BASIC语言结构简单,易学易用,并且具有交互能力,成为许多初学者学习程序设计的入门语言。

(2) 结构化语言

20 世纪 70年代以来,结构化程序设计和软件工程的思想日益为人们所接受和欣赏。在它们的影响下,先后出现了一些很有影响的结构化语言,这些结构化语言直接支持结构化的控制结构,具有很强的过程结构和数据结构能力。PASCALCAda语言就是它们的突出代表。

PASCAL 语言是第一个系统地体现结构化程序设计概念的现代高级语言,软件开发的最初目标是把它作为结构化程序设计的教学工具。由于它模块清晰、控制结构完备、有丰富的数据类型和数据结构、语言表达能力强、移植容易,不仅被国内外许多高等院校定为教学语言,而且在科学计算、数据处理及系统软件开发中都有较广泛的应用。

C 语言功能丰富,表达能力强,有丰富的运算符和数据类型,使用灵活方便,应用面广,移植能力强,编译质量高,目标程序效率高,具有高级语言的优点。同时,C语言还具有低级语言的许多特点,如允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作等。用 C 语言编译程序产生的目标程序,其质量可以与汇编语言产生的目标程序相媲美,具有可移植的汇编语言的美称,成为编写应用软件、操作系统和编译程序的重要语言之一。

(3) 专用语言

  是为某种特殊应用而专门设计的语言,通常具有特殊的语法形式。一般来说,这种语言的应用范围狭窄,移植性和可维护性不如结构化程序设计语言。随着时间的发展,被使用的专业语言已有数百种,应用比较广泛的有 APL语言、Forth 语言、LISP 语言。

  二、从客观系统的描述分类

  从描述客观系统来看,程序设计语言可以分为面向过程语言和面向对象语言

(1) 面向过程语言

  以数据结构+算法程序设计范式构成的程序设计语言,称为面向过程语言。前面介绍的程序设计语言大多为面向过程语言。

(2) 面向对象语言

  以对象+消息程序设计范式构成的程序设计语言,称为面向对象语言。比较流行的面向对象语言有DelphiVisual BasicJavaC++等。

Delphi 语言具有可视化开发环境 , 提供面向对象的编程方法,可以设计各种具有Windows内格的应用程序(数据库应用系统、通信软件和三维虚拟现实),也可以开发多媒体应用系统。

Visual Basic 语言简称 VB,是为开发应用程序而提供的开发环境与工具。它具有很好的图形用户界面,采用面向对象和事件驱动的新机制,把过程化和结构化编程集合在一起。它在应用程序开发中的图形化构思,无需编写任何程序,就可以方便地创建应用程序界面,且与 Windows 界面非常相似,甚至是一致的。

Java 语言是一种面向对象的、不依赖于特定平台的程序设计语言,简单、可靠、可编译、可扩展、多线程、结构中立、类型显示说明、动态存储管理、易于理解,是一种理想的、用于开发 Internet 应用软件的程序设计语言。

第四代非过程化语言

4GL 是非过程化语言,编码时只需说明做什么,不需描述算法细节。

数据库查询和应用程序生成器是 4GL的两个典型应用。用户可以用数据库查询语言(SQL)对数据库中的信息进行复杂的操作。 用户只需将要查找的内容在什么地方、 据什么 根条件进行查找等信息告诉SQLSQL将自动完成查找过程。应用程序生成器则是根据用户的需求自动生成满足需求的高级语言程序。真正的第四代程序设计语言应该说还没有出现。所谓的第四代语言大多是指基于某种语言环境上具有 4GL 特征的软件工具产品, System Z、如PowerBuilderFOCUS等。第四代程序设计语言是面向应用,为最终用户设计的一类程序设计语言。它具有缩短应用开发过程、降低维护代价、最大限度地减少调试过程中出现的问题以及对用户友好等优点。

3,java语言发展

Java语言的诞生具有一定的戏剧性,它并不是经过精心策划、制作,最后产生的划时代产品,从某个角度来看,Java语言的诞生完全是一种误会。

1990年末,Sun公司预料嵌入式系统将在未来家用电器领域大显身手。于是Sun公司成立了一个由James Gosling领导的“Green计划’,,准备为下一代智能家电(如电视机、微波炉、电话)编写一个通用控制系统。该团队最初考虑使用C++语言,但是很多成员包括Sun的首席科学家Bill Joy,发现C++和可用的API在某些方面存在很大问题。而且工作小组使用的是嵌入式平台,可用的系统资源极其有限。并且很多成员都发现C++太复杂,以致很多开发者经常错误使用。而且C++缺少垃圾回收系统、可移植性、分布式和多线程等功能。根据可用的资金,Bill Joy决定开发一种新语言,他提议在C++的基础上,开发一种面向对象的环境。于是,Gosling试图通过修改和扩展C++的功能来满足这个要求,但是后来他放弃了。他决定创造一种全新的语言:Oak

到了1992年的夏天,Green计划已经完成了新平台的部分功能,包括Green操作系统、Oak的程序设计语言、类库等。同年11月,Green计划被转化成了“FirstPerson有限公司”,一个Sun公司的全资子公司。FirstPerson团队致力于创建一种高度互动的设备。当时代华纳发布了一个关于电视机顶盒的征求提议书时,FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。但有线电视业界觉得FirstPerson的平台给予用户过多的控制权,因此FirstPerson的投标败给了SGI。同时,与3DO公司的另外一笔关于机顶盒的交易也没有成功。此时,可怜的Green项目几乎接近夭折,甚至Green项目组的一半成员也被调到了其他项目组。正如中国古代的寓言所言:塞翁失马,焉知非福?如果Green项目在机顶盒平台投标成功,也许就不会诞生Java这门伟大的语言了。

1994年夏天,互联网和浏览器的出现不仅给广大互联网的用户带来了福音,也给Oak语言带来了新的生机。Gosling立即意识到,这是一个机会,于是对小组中的Oak进行了小规模的改造,到了1994年秋,NaughtonJonathan Payne完成了第一个Java语言的网页浏览器:WebRunnerSun公司实验室主任Bert Sutherland和技术总监Eric Schmidt观看了该浏览器的演示,对该浏览器的效果给予了高度评价。当时Oak这个商标已被别人注册,于是只得将Oak更名为Java

Sun公司在1995年年初发布了Java语言,Sun公司直接把Java放到互联网上,免费给大家使用。甚至连源代码也不保密,也放在互联网上向所有人公开。几个月后,让所有人都大吃一惊的事发生了:Java成了互联网上最热门的宝贝。竟然有10万多人次访问了Sun公司的网页,下载了Java语言。然后,互联网上立即就有数不清的Java小程序(也就是Applet ),演示着各种小动画、小游戏等。Java语言终于扬眉吐气了,成为了一种广为人知的编程语言。在Java语言出现之前,互联网的网页实质上就像是一张纸,不会有任何动态的内容。有了Java语言之后,浏览器的功能被扩大了,Java程序可以直接在浏览器里运行,可以直接与远程服务器交互:Java语言编程,可以在互联网上像传送电子邮件一样方便地传送程序文件!

1995年,Sun虽然推出了Java,但这只是一种语言,如果想开发复杂的应用程序,必须要有一个强大的开发类库。因此,Sun1996年年初发布了JDK1.0。这个版本包括了两部分:运行环境(JRE)和开发环境(JDK )。在运行环境中包括了核心API、集成API、用户界面API、发布技术、Java虚拟机(JVM)五个部分;开发环境还包括了编译Java程序的编译器(javac命令)

接着Sun1997218日发布了JDK1.1JDK1.1增加了JIT(即时编译)编译器。JIT和传统的编译器不同,传统的编译器是编译一条,运行完后再将其扔掉,而JIT会将经常用到的指令保存在内存中,当下次调用时就不需要重新编译了,通过这种方式让JDK在效率上有了较大提升。但一直以来,Java主要的应用就是网页上的Applet以及一些移动设备中。到了1996年年底,Flash面世了,这是一种更加简单的动画设计软件:使用Flash几乎无须任何编程语言知识,就可以作出丰富多彩的动画,随后Flash增加了ActionScript编程脚本,Flash逐渐蚕食了Java语言在网页上的应用。

1995Java的诞生到1998年年底,Java语言虽然成为了互联网上广泛使用的编程语言,但它并没有找到一个准确的定位,也没有找到它必须存在的理由:Java语言可以编写Applet,而Flash一样可以做到,而且更快,开发成本更低。

直到199812月,Sun发布了Java历史上最重要的JDK版本:JDK1.2,伴随JDK1.2一同发布的还有JSP/Servlet,EJB等规范,并将Java分成了J2EE, J2SEJ2 ME三个版本,其中:

   J2ME:主要用于控制移动设备和信息家电等有限存储的设备。

   J2SE:是整个Java技术的核心和基础,它是J2MEJ2EE编程的基础,也是这本书主要介绍的内容。

   J2EE: Java技术中应用最广泛的部分,J2EE提供了企业应用开发相关的完整解决方案。

这标志着Java已经吹响了向企业、桌面和移动3个领域进军的号角,标志着Java已经进入Java2时代,这个时期也是Java飞速发展的时期。

Java2中,Java发生了很多革命性的变化,而这些革命性的变化一直沿用到现在,对Java的发展形成了深远的影响。直到今天,我们还经常看到J2EE, J2ME等名称。不仅如此,JDK1.2还把它的API分成了三大类:

   核心API:Sun公司制定的基本的API,所有的Java平台都应该提供。这就是我们平常所说的Java核心类库。

   可选API:这是SunJDK提供的扩充API,这些API因平台的不同而不同。

   特殊API:用于满足特殊要求的API。如用于JCAJCE的第三方加密类库。

20022月,Sun发布了JDK历史上最为成熟的版本:JDK1.4。此时由于Compaq, Fujitsu, SAS,Symbian, IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。到JDK1.4为止,我们已经可以使用Java实现大多数的应用了。在此期间,Java语言在企业应用领域大放异彩,大量基于Java语言的开源框架现:Struts,WebWork, Hibernate, Spring;大量企业应用服务器也开始涌现: WebLogic, WebSphere, JBoss等,这些都标志着Java语言进入了飞速发展时期。

200410月,Sun发布了万众期待的JDK1.5,同时,SunJDK1.5改名为Java SE 5.0, J2EE,J2ME也相应地改名为Java EEJava ME.JDK1.5增加了诸如泛型、增强的for语句、可变数目参数、注释(Annotations)、自动拆箱和装箱等功能;同时,也发布了新的企业级平台规范,如通过注释等新特性来简化EJB的复杂性,并推出了EJB3.0规范。并推出了自己的MVC框架规范:JSF,JSF规范类似于ASP.NET的服务端控件,通过它可以快速地构建复杂的JSP界面。

2009420日甲骨文以现金收购Sun微系统公司,交易价格达74亿美元。该协议达成后,IBM公司放弃了收购网络设备制造商。IBM公司此前表示愿意以每股9.40美元购买Sun公司的股票,但收购谈判破裂后,IBM公司于20095月初取消独家谈判权,IBM并撤回其报价。

 

4,java语言特性

跨平台性

 平台——操作系统   windows系统、unix等(write once,run anywhere

简单性

 相对于C++

纯面向对象性

 Java语言只能采用面向对象的方式进行编程

开放性

 SUN公司已经对java语言开源

5,Java语言运行机制

一般语言运行机制

编译型:( C/C++Pascal/Object PascalDelphi) )

编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,如exe文件下次直接运行即可exe文件),运行时不需要再次编译源文件,不需要翻译,所以编译型语言的程序执行效率高。但是在不同的操作系统上不可以运行相同的编译文件,缺点就是不可跨平台。


 

 


解释型:( JavaJavaScriptVBScriptPerlPythonRubyMATLAB )

解释语言在运行程序的时候才翻译,逐行翻译并运行,下次运行还需要再次翻译源文件才能运行,这样解释语言每执行一次就要翻译一次,效率比较低。优点就是源文件在运行中不会变,可在不同操作平台运行,可跨平台。



 

Java语言运行机制:(先编译,后解释)


Java是两种类型的集合.Java源文件的后缀名为*.java,通过编译生成一个*.class,然后通过Java虚拟机(JVM)执行编译文件. 

 

6JVM--JAVA虚拟机

VM 虚拟机

虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机Parallels Desktop VmwareVirtualBoxVirtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。

JVM--Java虚拟机

Java虚拟机有自己完善的硬体架构,如处理器堆栈寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

 

JVM+解释器=JRE(JAVA运行环境)

编译器+JRE+工具+类库=JDKJAVA开发工具包)

原创粉丝点击