Notes 20180506 : Java程序设计语言概述

2.Java程序设计语言概述  

  若是对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,做为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是本身接触的开发语言是如此的强大,忧虑的是万一哪一天Java市场占有率再也不,那咱们何去何从呢(Oracle收购Sun后这种忧虑日深,Oracle起诉谷歌,更是对于开源的Java开源的一种忧虑)?不过这都是小程序员的我来讲是杞人忧天了,在Java没落以前咱们应该先将Java搞清楚才对,而后由此深刻了解计算机的世界,对于Java程序设计语言,咱们主要经过几方面来学习:语言的历史,语言的基本构成,面向对象,字符串与数字,常见的工具类,集合,IO,多线程等。html

  今天的学习主要是介绍Java程序设计语言的概述,内容讲解Java是怎么产生的,有哪些优势。下面开始今天的学习;java

前言

  Java是一门面向对象编程语言,是源于C++语言,它不只吸取了C++语言的各类优势,还摒弃了C++里难以理解的多继承、指针等概念,所以Java语言具备功能强大和简单易用两个特征。Java语言做为静态面向对象编程语言的表明,极好地实现了面向对象理论,容许程序员以优雅的思惟方式进行复杂的编程 。程序员

  Java具备简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特色。Java能够编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。正则表达式

  上面是百度百科对于Java的解释,有过开发经验的人是很好理解的,可是对于一些初涉开发的程序原来讲,未必可以理解每一个词语背后的意思,下面咱们就来从Java的产生提及;

2.1 Java简介

  Java是一种高级的面向对象的程序设计语言。使用Java语言编写的程序是跨平台的,从PC机到手持电脑都有Java开发的程序和游戏,Java程序能够在任何计算机、操做系统和支持Java的硬件设备上运行。数据库

2.1.1 Java语言的历史

  20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就当即引发了自动控制领域人员的注意,由于使用它能够大幅度提高消费类电子产品如电视机顶盒、面包烤箱、移动电话等的智能化程度。Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其余几个工程师一块儿组成的工做小组在加利福尼亚州门洛帕克市沙丘路的一个小工做室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。编程

  因为C++所具备的优点,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来讲,C++程序过于复杂和庞大。另外因为消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用须要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),以待语言开发成功后,能有半导体芯片生产商开发和生产这种硬件平台(这其实也是Java跨平台设计的由来)。对于新语言的设计,Sun公司研发人员并无开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。(OaK就是Java语言的前身),这个名字源于James Gosling 办公室窗外的一颗橡树(OaK)。小程序

  因为在开发Oak语言时,尚且不存在运行字节码的硬件平台,因此为了在开发时能够对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照本身所指定的规范,用软件建设了一个运行平台(这其实就是JVM的实质概念,它只是一个对软件运行的硬件环境的虚拟实现),整个系统除了比C++更加简单以外,没有什么大的区别。1992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操做系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,可是,硬件生产商并未对此产生极大的热情。由于他们认为,在全部人对Oak语言还一无所知的状况下,就生产硬件产品的风险实在太大了,因此Oak语言也就由于缺少硬件的支持而没法进入市场,从而被搁置了下来。
  1994年六、7月间,在经历了一场历时三天的讨论以后,团队决定再一次改变了努力的目标,此次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向一样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。做为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner。
  1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页可以“灵活”起来,急需一种软件技术来开发一种程序,这种程序能够经过网络传播而且可以跨平台运行。因而,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来好久的Oak,而且从新审视了那个用软件编写的试验平台,因为它是按照嵌入式系统硬件平台体系结构进行编写的,因此很是小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序很是小,适合在网络上传输。Sun公司首先推出了能够嵌入网页而且能够随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak改名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字以后,最终,使用了提议者在喝一杯Java咖啡时无心提到的Java词语)。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷中止了本身的相关开发项目,竞相购买了Java使用许可证,并为本身的产品开发了相应的Java平台。
  1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制做。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器
  1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。
  1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布,是Java发展过程当中最重要的一个里程碑,标志着Java的应用开始普及。(咱们以往在书籍或其它子类中所见的J2EE等的2就来自于Java1.2版本)
  1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是做为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及以后全部版本的Sun JDK的默认虚拟机。
  2000年5月,JDK1.三、JDK1.4和J2SE1.3相继发布,几周后其得到了Apple公司Mac OS X的工业标准的支持。2001年9月24日,J2EE1.3发布。2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提高,与J2SE1.3相比,其多了近62%的类和接口。在这些新特性当中,还提供了普遍的XML支持、安全套接字(Socket)支持(经过SSL与TLS协议)、全新的I/O API、正则表达式、日志与断言。2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5改名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。
  2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各类版本已经改名,已取消其中的数字2,如J2EE改名为JavaEE,J2SE改名为JavaSE,J2ME改名为JavaME。
  2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术做为免费软件对外发布。Sun公司正式发布的有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界全部的开发人员都可对Java源代码进行修改 。
  2009年,甲骨文公司宣布收购Sun 。2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。2014年,甲骨文公司发布了Java8正式版。

2.1.2 什么是Java语言

  Java是于1995年由Sun公司推出的一种极富创造力的面向对象的程序设计语言,它是由有Java之父之称的Sun研究院院士詹姆斯.戈士林博士亲手设计而成的,并完成了Java技术的原始编译器和虚拟机。Java的最初名字是OAK,在1995年被重命名为Java,正式发布。设计模式

  Java是一种经过解释方式来执行的语言,其语法规则和C++相似。同时,Java也是一种跨平台的程序设计语言。用Java语言编写的程序,能够运行在任何平台和设备上,如跨越IBM我的电脑、MAC苹果计算机、各类微处理器硬件平台,以及Windows、UNIX、OS/二、MAC OS 等系统平台,真正实现“一次编写,处处运行”。Java很是适于企业网络和Internet环境,而且已成为Internet中最具影响力、最受欢迎的编程语言之一。浏览器

  与目前经常使用的C++相比,Java语言简洁的多,并且提升了可靠性,除去了最大的程序错误根源,此外他还有较高的安全性,能够说它是有史以来最为卓越的编程语言。安全

  Java语言编写的程序既是编译型的,又是解释型的。序代码通过编译以后转换为一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式保存,虚拟机将字节码解释为机器码,而后在计算机上面运行。Java语言程序代码的编译和运行过程如图1.1所示。

 

                              图1.1   Java程序的编译和运行过程

2.1.3 Java的应用领域

  借助Java,程序开发人员能够自由地使用现有的硬件和软件系统平台。这是由于Java是独立于平台的,它还能够应用于计算机以外的领域,Java程序能够在便携式计算机、电视、电话、手机和其余的大量电子设备上运行。Java的用途不胜枚举,他拥有无可比拟的能力,其节省的时间和费用也十分可观。Java的应用领域主要有如下方面:

  • 桌面应用系统开发。
  • 嵌入式系统开发。
  • 电子商务应用。
  • 企业级应用开发。
  • 交互式系统开发。
  • 多媒体系统开发。
  • 分布式系统开发。
  • Web应用系统开发。

  Java无处不在,它已经拥有几百万个用户,其发展速度要快于在它以前的任何一种计算机语言。Java可以给企业和最终用户带来数不尽的好处。Oracle公司董事长和首席执行官Larru Ellison说过:“Java正在进入企业、家庭、和学校。它正在像Internet自己同样成为广泛存在的技术。”

  若是仔细观察,就会发现Java就在咱们身边,如咱们常用的Java开发工具Eclipse、NetBeans、JBuilder等,另外还有RSSOwl、Limewire、Azureus、CyberDuck、OpenOffice等优秀软件都是使用Java编写的。此外,各手机厂商都为本身的产品提供了Java技术的支持,各类手机上的Java程序和游戏已经数不胜数。

2.1.4 Java的版本

  自从Sun公司推出Java以来,就力图使之无所不能。Java发展至今,按应用范围分为三个版本,即Java SE、Java EE、Java ME,也就是Java ONE(Open Net Environment)体系。本节将分别介绍这3个Java版本。

1.Java SE

  Java SE是Java的标准版,主要用于桌面应用程序的开发,同时也是Java的基础,它包含Java语言基础、JDBC(Java数据库链接性操做)、I/O(输入输出)、网络通讯、多线程等技术。Java SE的结构如图1.2所示。

 

图1.2   Java SE的结构

2.Java EE

  Java EE是Java的企业版,主要用于开发企业级分布式的网络程序,如电子商务网站和ERP(企业资源规划)系统,其核心为EJB(企业Java组件模型)。Java EE的结构如图1.3所示。

       

图1.3   Java EE的结构

3.Java ME

  Java ME主要应用于嵌入式系统开发,如掌上电脑、手机等移动通讯电子设备,如今大部分手机厂商所生产的手机都支持Java技术。Java ME的结构图如图1.4所示。

图 1.4   Java ME的结构

2.1.5 怎么学好Java

  如何学好Java语言,是全部初学者须要共同面对的问题,其实每种语言的学习方法都大同小异,初学者须要注意的主要有如下几点:

  • 明确本身的学习目标和大的方向,选择并锁定一门语言,按照本身的学习方向努力学习,认真研究。
  • 初学者不要看太多的书,先找本相对基础的书系统的学习。不少程序开发人员工做了好久也只是熟悉部分基础而已,并无系统地学习Java语言。
  • 了解设计模式。开发程序必须编写程序代码,这些代码必须具备高度的可读性,这样编写的程序才能调试、维护和升级的价值。学习一些设计模式,可以更好的把握项目的总体结构。
  • 不要死记语法。在刚接触一门语言,特别是Java语言时,掌握好基本语法,并大概了解一些功能便可。借助开发工具(如Eclipse或NetBeans)的代码辅助功能,完成代码的录入,这样能够快速进入学习状态。
  • 多实践,多思考,多请教。仅读懂书本中的内容和技术是不行的,必须动手编写程序代码,并运行程序、分析运行结构,从而对学习内容有个总体的认识和确定。用本身的方式思考问题、编写代码来提升编程思想。平时多请教老师或经理,和其余人多沟通技术问题,提升本身的技术和见识。
  • 不要急躁。遇到技术问题,必须冷静对待,不要让本身思惟混乱,保持清醒的头脑才能分析和解决各类问题。能够尝试用歌和散步等方式来放松本身。
  • 遇到问题,首先尝试本身解决,这样能够提升本身的程序调试能力,并对常见问题有必定的了解,明白出错的缘由,甚至触类旁通,解决其余关联的错误问题。
  • 多查阅资料。能够常常到Internet上搜索相关资料或解决问题的方法,网络上已经摘录了不少人遇到的问题和不一样的解决方法,分析这些解决问题的方法,找到最适合本身的方法。
  • 多阅读别人的源代码。不但要看懂别人的程序代码,还要分析编程者的编程思想和设计模式,并融为己用。

2.1.6 Java API文档

  API的全称是 Application Programming Interface,即应用程序编程接口。Java API文档是Java程序开发不可缺乏的编程词典,并记录了Java语言中海量的API,主要包括类的继承结构、成员变量和成员方法、构造方法、静态成员的详细说明和描述信息。能够在Java网站http://java.sun.com中找到最新版本的JDK文档(即API文档),Java API文档的页面效果如图1.5所示。

图1.5   Java API文档页面

2.1.7 Java语言组成

Java 由四方面组成:

●Java编程语言,即语法。

●Java文件格式,即各类文件夹、文件的后缀。

●Java虚拟机(JVM),即处理*.class文件的解释器。

●Java应用程序接口(Java API)。

2.2 Java语言的特性

  Java语言的做者们编写了具备普遍影响的Java白皮书,里面详尽地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java语言的特性。下面将对这些特性进行扼要的介绍。

2.2.0 简单

  Java语言的语法简单明了,容易掌握,而且是纯面向对象的语言。Java语言的简单性主要体如今如下几个方面:

  • 语法规则和C++相似。从某种意义上讲,Java语言是由C和C++语言演变而来的,因此C程序设计人员能够很容易地掌握Java语言的语法。
  • Java语言对C++进行了简化和提升。例如,Java使用接口取代了多重继承,并取消了指针,由于指针和多重继承一般使程序变得复杂。Java语言还经过实现垃圾自动收集,大大简化了程序设计人员的资源释放管理工做。
  • Java提供了丰富的类库和API文档以及第三方开发包,另外还有大量的基于Java的开源项目,JDK(Java开发者工具箱)已经开放源代码,读者能够经过分析项目的源代码,从而提升本身的编程水平。

2.2.1 面向对象

  面向对象是Java语言的基础,也是Java语言的重要特性,它自己就是一种纯面向对象的程序设计语言。Java提倡万物皆对象,语法中不能在类外面定义单独的数据和函数,也就是说,Java语言最外部的数据类型是对象,全部的元素都要经过类和对象来访问。

  面向对象也能够对比与面向过程来理解:面向对象是相对于面向过程而言的,面向过程着重于功能的实现过程,而面向对象则是将相同功能的实现封装进一个对象,而后经过调用这个对象来侧重于功能,着重于可以实现功能的对象。

2.2.2 分布性

  Java的分布性包括操做分布(服务分布式)和数据分布(数据分布式),其中操做分布是指在多个不一样的主机上布置相关操做,而数据分布是将数据分别存放在多个不一样的主机上,这些主机是网络中的不一样成员。Java能够凭借URL(统一资源定位符)对象访问网络对象,访问方式与访问本地系统相同。

2.2.3 可移植性

  Java程序具备与体系结构无关的特性,能够方便的移植到网络上的不一样计算机中。同时,Java的类库中也实现了针对不一样平台的接口,使这些类库能够移植。举例来讲C++的数据类型中int类型并非固定的长度大小,而是根据环境或编译器指定的,而在Java中数据长度是固定的,这就使得Java在移植时不用考虑数据是否会存在溢出的状况,再好比,在针对本地方法调用时Java作了很好的处理,使得无论在Windows或Unix中都可以很好的运行。

2.2.4 解释型

  运行Java程序须要解释器。任何移植了Java解释器的计算机或其余设备均可以用Java字节码进行解释执行。字节码独立于平台,它自己携带了许多编译时的信息,使得链接过程更加简单,开发过程更加迅速,更具探索性。

2.2.5 安全性

  Java语言删除了相似C语言中的指针和内存释放等语法,有效的避免了非法操做内存。Java程序代码要通过代码校验、指针校验等不少测试步骤才可以运行,因此未通过容许的Java程序不可能出现损害系统平台的行为,并且使用Java能够编写防病毒和防修改的系统。

2.2.6 健壮性

  Java程序的设计目标之一,是编写多方面的、可靠的应用程序,Java将检查程序在编译和运行时的错误,并消除错误。类型检查能帮助用户检查出不少在开发早期出现的错误。集成开发工具(如Eclipse、NetBeans)的出现也使编译和运行Java程序更加容易。

2.2.7 多线程

  多线程机制可以使应用程序在同一时间并行执行多项任务,并且相应的同步机制能够保证不一样线程可以正确地共享数据。使用多线程,能够带来更好的交互能力和实时行为。Java提供了很好的多线程机制。

2.2.8 高性能

  Java编译后的字节码是在解释器中运行的,因此它的速度较多数交互式【交互的意思就是你和程序对话.例如你点击一个按钮,而后程序弹出一个窗口"您真的要退出吗?"这样你就能够选择了.这个就叫交互.目前大部分的程序都是交互程序。】应用程序提升了不少。另外,字节码能够在程序运行时被翻译成特定平台的机器指令,从而进一步提升运行速度。

2.2.9 动态

  Java在不少方面比C和C++更能适应发展的环境,能够动态调整库中方法和增长变量,而客户端却不须要任何更改。在Java中进行动态调整是很是简单和直接的。

2.2.10  体系结构中立

  Java编写的程序通过编译生成字节码。这个字节码不只能够很容易地在任何机器上执行,并且还能够动态地翻译成本地机器代码。这是Java体系结构中立的体现,但这仍是依赖于JVM实现的。

总结

  得益于Java的跨平台和丰富的工具包支持,Java在现在的互联网时代已经成为一门重要的开发语言了;虽然如今计算机技术日益进步,可是选择Java仍不失为明智自居。

深究:Java跨平台

  每次谈到Java的跨平台,都有意犹未尽的意思,这也是为何这章,我花了很大的篇幅在Java的历史上面的缘由,为此,咱们单独做为一个问题,在另外一篇文章中进行了探讨,想要了解的能够参见深究Java跨平台。

相关文章
相关标签/搜索