诚意
诚意如你,当一诚的态度对待

导航

 

 

一:Java历史

  1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕变成为Java语言。

  1992年3月,由于Oak已被用作另一种已存在的编程语言名称,因此必须选一个新的名字——它就是Java,灵感来源于咖啡。

  1993年2月,电视机顶盒,FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。 
   
  1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“Write Once,Run Anywhere”的口号。

  1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。

  1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。同年9月,已有大约8.3万个网页应用了Java技术来制作。在1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,从此JavaOne成为全世界数百万Java语言开发者每年一度的技术盛会。

  1997年2月19日,Sun公司发布了JDK 1.1,Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的,JDK 1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。

  直到1999年4月8日,JDK 1.1一共发布了1.1.0~1.1.8九个版本。从1.1.4之后,每个JDK版本都有一个自己的名字(工程代号),分别为:JDK 1.1.4 - Sparkler(宝石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比盖尔,女子名)、JDK 1.1.7 - Brutus(布鲁图,古罗马政治家和将军)和JDK 1.1.8 – Chelsea(切尔西,城市名)。

  1998年12月4日,JDK迎来了一个里程碑式的版本JDK 1.2,工程代号为Playground(竞技场),Sun在这个版本中把Java技术体系拆分为3个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform, Standard Edition)、面向企业级开发的J2EE(Java 2 Platform, Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。在这个版本中出现的代表性技术非常多,如EJB、Java Plug-in、Java IDL、Swing等,并且这个版本中Java虚拟机第一次内置了JIT(Just In Time)编译器(JDK 1.2中曾并存过3个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两个虚拟机都是内置JIT编译器的,而之前版本所带的Classic VM只能以外挂的形式使用JIT编译器)。在语言和API级别上,Java添加了strictfp关键字与现在Java编码之中极为常用的一系列Collections集合类。

  在1999年3月和7月,分别有JDK 1.2.1和JDK 1.2.2两个小版本发布。

  1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布,JDK 1.3相对于JDK 1.2的改进主要表现在一些类库上(如数学运算和新的Timer API等),JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展),使用CORBA IIOP来实现RMI的通信协议,等等。这个版本还对Java 2D做了很多改进,提供了大量新的Java 2D API,并且新添加了JavaSound类库。JDK 1.3有1个修正版本JDK 1.3.1,工程代号为Ladybird(瓢虫),于2001年5月17日发布。

  自从JDK 1.3开始,Sun维持了一个习惯:大约每隔两年发布一个JDK的主版本,以动物命名,期间发布的各个修正版本则以昆虫作为工程名称。

  2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼)。JDK 1.4是Java真正走向成熟的一个版本,Compaq、Fujitsu、SAS、Symbian、IBM等著名公司都有参与甚至实现自己独立的JDK 1.4。哪怕是在十多年后的今天,仍然有许多主流应用(Spring、Hibernate、Struts等)能直接运行在JDK 1.4之上,或者继续发布能运行在JDK 1.4上的版本。JDK 1.4同样发布了很多新的技术特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。

  JDK 1.4有两个后续修正版:

  2002年9月16日发布的工程代号为Grasshopper(蚱蜢)的JDK 1.4.1

  2003年6月26日发布的工程代号为Mantis(螳螂)的JDK 1.4.2。

  2002年前后还发生了一件与Java没有直接关系,但事实上对Java的发展进程影响很大的事件,那就是微软公司的.NET Framework发布了。这个无论是技术实现上还是目标用户上都与Java有很多相近之处的技术平台给Java带来了很多讨论、比较和竞争,.NET平台和Java平台之间声势浩大的孰优孰劣的论战到目前为止都在继续。

  2004年9月30日,JDK 1.5发布,工程代号Tiger(老虎)。从JDK 1.2以来,Java在语法层面上的变换一直很小,而JDK 1.5在Java语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 1.5中加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。另外,JDK 1.5是官方声明可以支持Windows 9x平台的最后一个JDK版本。

  2006年12月11日,JDK 1.6发布,工程代号Mustang(野马)。在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。JDK 1.6的改进包括:提供动态语言支持(通过内置Mozilla Java Rhino引擎实现)、提供编译API和微型HTTP服务器API等。同时,这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当多的改动。

  在2006年11月13日的JavaOne大会上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是Sun本身也无权限进行开源处理的)外,OpenJDK几乎包括了Sun JDK的全部代码,OpenJDK的质量主管曾经表示,在JDK 1.7中,Sun JDK和OpenJDK除了代码文件头的版权注释之外,代码基本上完全一样,所以OpenJDK 7与Sun JDK 1.7本质上就是同一套代码库开发的产品。

  JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发JavaFX、经济危机及Sun收购案等原因,Sun在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。JDK 1.6到目前为止一共发布了37个Update版本,最新的版本为Java SE 6 Update 37,于2012年10月16日发布。

  2009年2月19日,工程代号为Dolphin(海豚)的JDK 1.7完成了其第一个里程碑版本。根据JDK 1.7的功能规划,一共设置了10个里程碑。最后一个里程碑版本原计划于2010年9月9日结束,但由于各种原因,JDK 1.7最终无法按计划完成。

  从JDK 1.7最开始的功能规划来看,它本应是一个包含许多重要改进的JDK版本,其中的Lambda项目(Lambda表达式、函数式编程)、Jigsaw项目(虚拟机模块化支持)、动态语言支持、GarbageFirst收集器和Coin项目(语言细节进化)等子项目对于Java业界都会产生深远的影响。在JDK 1.7开发期间,Sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动JDK 1.7的研发工作按正常计划进行。为了尽快结束JDK 1.7长期“跳票”的问题,Oracle公司收购Sun公司后不久便宣布将实行“B计划”,大幅裁剪了JDK 1.7预定目标,以便保证JDK 1.7的正式版能够于2011年7月28日准时发布。“B计划”把不能按时完成的Lambda项目、Jigsaw项目和Coin项目的部分改进延迟到JDK 1.8之中。最终,JDK 1.7的主要改进包括:提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式“转正”)、加强对非Java语言的调用支持(JSR-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。

  到目前为止,JDK 1.7已经发布了9个Update版本,最新的Java SE 7 Update 9于2012年10月16日发布。从Java SE 7 Update 4起,Oracle开始支持Mac OS X操作系统,并在Update 6中达到完全支持的程度,同时,在Update 6中还对ARM指令集架构提供了支持。至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。

  2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。

  2011年7月28日,Oracle公司发布Java SE 1.7

  2014年3月18日,Oracle公司发表Java SE 1.8

  Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。
View Code

 

最后来看张表格:

 

二:Java的三个体系

Java SE(Java 2 Platform Standard Edition)标准版【J2SE】

  支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE,是其它两者的基础。

Java ME(Java 2 Platform Micro Edition)小型版、微型版【J2ME】   (已经被安卓干掉)

  支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME。

Java EE(Java 2 Platform Enterprise Edition)企业版【J2EE】

  是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet 、Jsp等,主要针对于Web应用程序开发。版本以前称为J2EE。

 

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字"2"。从此J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

 

三种技术的关系:

 

 

三:Java在各领域中的应用

从Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面:

企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。

Android平台应用:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。

移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

 

四:Java语言的特性

1、简单性(简洁有效、易学)

  Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

2、面向对象(强制面向对象)

  Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。

  Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。

3、分布式处理(适合分布式计算)

  Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库。

  Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4、健壮性(鲁棒性,防患于未然)

  Java吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。

  Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

5、结构中立(是一种中性结构)

  Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

6、跨平台(可移植性)

  通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”

原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM: Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行

Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

7、解释型(解释性)

  Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

8、高性能(具有较好的性能)

  与那些解释型的高级脚本语言相比,Java的确是高性能的。

9、多线程(具有多线程处理能力)

  Java语言支持多个线程的同时执行,并提供多线程之间的同步机制。

10、安全性(具有较高的安全性)

  Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。

11、动态(是一种动态语言)

  Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

五:准备运行环境

明确什么是JRE,JDK(jdk包含了jre和开发工具)

  -java runtime environment

  -java development kit

 

什么是JRE、JDK? 

JRE(Java Runtime Environment Java运行环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等

JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了

其中的开发工具:

  运行工具(java.exe)

 

  编译工具(javac.exe)   (c:compiler转换为二进制指令)

  打包工具(jar.exe) .

  查看进程(jps.exe)

 

jdk = jre + 开发工具

jre = jvm + 核心类库(API)

 

作为开发人员,只需要jdk即可.

 

六:jdk的安装

1.建立一个专门用于存放软件的目录

c:\mysoft

 

2.双击安装程序

  

更改目录到刚才创建的c:\mysoft,再下边再创建一个jdk相关的目录

c:\mysoft\jdk8

 

进入安装程序:

 

 

3.安装过程中出现安装jre的提示,选择安装,选择和jdk同等级的目录

 

 

比如:

c:\mysoft\jre8

 

4.安装过程

 

  

5.安装完成.点击关闭

 

 

 

验证jdk的安装

在任意的目录下输入java -version

出现错误提示:找不到命令:

 

 

 

原因:

cmd中输入的所有命令,系统都是在Path的环境变量中去寻找,找到就执行,找不到就报错.                                  

解决的办法:

告诉Path环境变量,Java命令在哪.   备注:JdkPath路径从盘符开始到bin,因为编 译时的命令javacjava命令都在bin文件夹中

jdk的安装包的路径结构:        

classpath环境变量说明:classpath是指java.exe命令寻找.class文件(编译后的文件)的路径,默认情况下是当前路径(.java源文件所在的路径),如果在计算机中配置如下路径classpath=:g:\chenliang\day1,那么java命令时就会在此路径下寻找.class文件,找不到就会报错.

 

 

bin:binary.二进制文件,windows中二进制文件指的就是可执行的文件(程序).

db:软件自带的一些重要数据加密.

include:包含的文件,通常是一些c语言写的头文件.

jre:jdk自带的jre.

lib:第三方的api.

 

 

配置环境变量

1.右键计算机

 

2.点击环境变量

 

3.修改系统环境变量Path

 

  PATH:配置JDK命令文件的目录

  CLASSPATH:配置类库文件的目录

  JAVAHOME:配置JDK安装路径

 

把其中的内容考到一个文本文件中,在末尾加上jdk中的bin目录的路径,路径之间用英文的分号分隔.

 

例如:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\mysoft\Python34;C:\mysoft\Python34\Scripts;C:\InstallPackage\scala-2.10.3\scala-2.10.3\bin;C:\mysoft\hadoop-2.7.3\bin;C:\mysoft\apache-maven-3.5.2\bin;C:\mysoft\MySQL\MySQL Server 5.5\bin;C:\mysoft\MySQL\bin;C:\mysoft\jdk8\bin

每个人的计算机的环境变量都不同,不能随便拷贝别人的环境变量拿来直接用!!

 

 

4.重新开启一个cmd窗口,输入java -version命令,出现以下提示,就表明安装OK

 

 

set 命令可以查看当前系统的所有环境变量

 

七:编写Java代码

1.编写源代码,保存在后缀为.java的文本文件中

 

2.使javac命令对它进行编译:

  javac   xxx.java

c -> compiler 编译(把人类能识别的代码转换成计算机能识别的二进制指令)

编译的结果是生成一个和类名同名的字节码文件:XXX.class

 

3.使用java命令运行这个程序(解释.

  java  xxx    (注意:不加后缀)

 

八:编译运行

1.c盘下创建一个专门用于存放代码的文件夹:

c:\code13

再建立以天数命令的文件夹:day01

 

2.day01中创建一个文本文件.并改名成:HelloWord.java

在其中写如下代码:

public class HelloWorld{
  public static void main(String[] args){
    System.out.println("Hello world");
  }
}

 

 

3.在当前路径下打开cmd

4.使用javac 编译源文件

javac HelloWorld.java  

正常编译的结果是:生成一个HelloWorld.class

 

5.运行这个二进制文件

java HelloWorld

 

  

常见的错误:

1.path没有配置好导致找不到命令.

2.大小写错误,导致找不到类

3.乱配置classpath

Java命令寻找类的路径

默认情况下,是当前路径.

 

注意:

notepad++中打开的命令提示符窗口,会缓存之前的环境变量设置!!!!

九:注释

主要有三种:

1.行注释

//开始到本行末尾都是注释内容

 

2.块注释 /多行注释

/*    */期间的所有内容都会被当成注释.可以跨行.

 

注意:多行注释不能嵌套.

 

3.文档注释:  

  格式:/** 注释文字 */

  通常是加在类定义的前面和方法定义的前面

 

 

 

注释的两种作用:

1.提示作用

2.帮助调试

/*
需求:在屏幕上打印Hello World字符串

*/
//类定义
public class Hello{    
    /*
    main方法,程序的入口点,被JVM直接执行的类需要有main方法
    其格式是固定的  
    */
    public static void main(String[] args){
        //这是输出语句,用于将括号里的内容打印到控制台
        System.out.println("Hello World");
    }
}

4:生成帮助文档

可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档

打开首页,查看下生成的 API 文档

PS:使用文档注释时还可以使用 javadoc 标记,生成更详细的文档信息:

       @author 标明开发该类模块的作者

       @version 标明该类模块的版本

       @see 参考转向,也就是相关主题

       @param 对方法中某参数的说明

       @return 对方法返回值的说明

       @exception 对方法可能抛出的异常进行说明

 

十:IDE工具

1:了解IDE

IDE:集成开发环境

(将程序开发环境与程序调试环境集合在一起,提高开发效率)

 

IDE工具:MyElipse

2:安装elipse

   https://www.eclipse.org/downloads

3:使用elipse

  (1)创建Java项目

    

      或者

     

 

  (2)创建程序包

    目的:主要为了方便源代码管理,可以将不同的源代码放置到不同的包下

      

 

  (3)创建Java源程序文件

    

 

  (4)运行Java程序

    

 

4:其他工具MyElipse

MyElipse是对elispe的扩展,集合了很多插件

  

5:文件的导入导出

  (1)导出

  

 

   (2)导入

     右键左侧空白栏,选import

      

      

 

posted on 2019-01-31 19:53  诚意  阅读(927)  评论(0编辑  收藏  举报