对于开发java的用户来说,JDK肯定不会陌生,今天小编带来的就是
JDK1.8,也就是最新的版本,大家伙都知道java是目前非常火爆的开发语言,而因为java的跨平台性,PC、手机以及一些只能移动设备都离不开它。
如果用户想要开发java应用程序,那么JDK 1.8是必备的软件,在软件中包含了开发java需要的编译器,运行环境以及大量的java基础类库,如果用户并不是开发人员,仅仅只需要运行java的运行程序,那么建议只下载安装jre即可。JDK 1.8拥有许多工具,有帮助用户进行编译的javac,帮助打包的jar,帮助文档生成的生成器javadoc等等,这些工具能够让用户在命令行的状态下直接进行java程序的许多工作,不过大多数的开发人员还是习惯于使用集成开发环境进行开发。虽然有了集成环境,但是JDK 1.8还是需要安装起来用户才能够正常的使用开发环境,有需要的用户不要错过。
JDK 1.8安装教程
1、用户可以在网盘选择下载32位或64位的安装包。
2、下载完毕解压缩,然后运行安装程序安装JDK 1.8,小编的电脑是64位所以以64位的为例。
3、选择安装路径以及组件,建议全部安装,安装路径就别改了,需要配置环境变量。
4、安装完jdk不要忘了还要安装jre,安装包自带,无需用户在下载jre。
5、安装完成。
JDK 1.8配置方法
1、安装完成后开始配置,首先打开计算机的属性,点击高级系统设置。
2、然后点击环境变量,新建环境变量,输入变量名和变量值。用户如果跟小编一样就照着小编的做,不一样的就将变量值改成用户安装JDK的位置。
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_1113、然后添加Path变量,变量值为:
“;%JAVA_HOME%\bin;”。
4、再新建一个classpath变量。
变量名:classpath
变量值:.;%JAVA_HOME%\lib5、然后进行验证,在开始菜单运行cmd命令行工具输入javac -version即可查看版本信息,如果错误则配置出错,需要用户检查变量。
JDK 1.8包含组件
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
JDK 1.8常用的包
java.lang: 这个是系统的基础类,比如String等都是这里面的,这个包是唯一一个可以不用引入(import)就可以使用的包。
java.io: 这里面是所有输入输出有关的类,比如文件操作等。
java.nio:为了完善io包中的功能,提高io包中性能而写的一个新包 ,例如NIO非堵塞应用
java.net: 这里面是与网络有关的类,比如URL,URLConnection等。
java.util: 这个是系统辅助类,特别是集合类Collection,List,Map等。
java.sql: 这个是数据库操作的类,Connection, Statement,ResultSet等。
javax.servlet:这个是JSP,Servlet等使用到的类。
JDK 1.8新特性
接口改善现在接口里已经完全可以定义静态方法了. 举一个比较普遍的例子就是在java类库中, 对于一些接口如Foo, 都会有一个有静态方法的工具类Foos 来生成或者配合Foo对象实例来使用. 既然静态方法可以存在于接口当中, 那么大多数情况下 Foos工具类完全可以使用接口中的公共方法来代理 (或者将Foos置成package-private).
函数式接口Java 8 引入的一个核心概念是函数式接口。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。比如,java.lang.Runnable就是一个函数式接口,因为它只顶一个一个抽象方法。
Lambdas一个函数式接口非常有价值的属性就是他们能够用lambdas来实例化。
捕获和非捕获的Lambda表达式当Lambda表达式访问一个定义在Lambda表达式体外的非静态变量或者对象时,这个Lambda表达式称为“捕获的”。
lambdas不做的事 你应该记住,有一些lambdas不提供的特性。为了Java 8它们被考虑到了,但是没有被包括进去,由于简化以及时间限制的原因。
Non-final* 变量捕获 - 如果一个变量被赋予新的数值,它将不能被用于lambda之中。"final"关键字不是必需的,但变量必须是“有效final”的(前面讨论过)。
java.util.function作为Comparator 和Runnable早期的证明,在JDK中已经定义的接口恰巧作为函数接口而与lambdas表达式兼容。同样方式可以在你自己的代码中定义任何函数接口或第三方库。
泛型接口改进这是一个以前不能做到的,对编译器判定泛型能力的努力改进。在以前版本的Java中有许多情形编译器不能给某个方法计算出泛型,当方法处于嵌套的或串联方法调用这样的上下文的时候,即使有时候对程序员来说它看起来“很明显”。那些情况需要程序员明确的指定一个“类型见证”(type witness)。它是一种通用的特性,但吃惊的是很少有Java程序员知道(我这么说是基于私下的交流并且阅读了一些StackOverflow的问题)。
java.time 在Java8中新的 date/timeAPI存在于 java.time包中。如果你熟悉Joda Time,它将很容易掌握。事实上,我认为如此好的设计,以至于从未听说过 Joda Time的人也能很容易的掌握。
几乎在API中的任何东西都是永恒的,包括值类型和格式化 。对于Date域或者处理或处理本地线程日期格式化不必太过担心。
集合API附件实际上接口能够定义默认方法允许了JDK作者加入大量的附件到集合API接口中。默认实现在核心接口里提供,而其他更有效或更好的重载实现被加入到可适用的具体类中。