javajdk需要什么版本的,java的JDK更新到什么版本了
大家好,今天来为大家解答javajdk需要什么版本的这个问题的一些问题点,包括java的JDK更新到什么版本了也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
Java方面JDK各版本的区别
一、java的版本区别
常用的 java程序分为 Java SE、Java EE、Java ME三个版本,介绍如下:
1. Java SE(Java Platform,Standard Edition)
Java SE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java应用程序。Java SE是基础包,但是也包含了支持 Java Web服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
2. Java EE(Java Platform,Enterprise Edition)。
这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序。Java EE是在 Java SE的基础上构建的,它提供 Web服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0应用程序。
3. Java ME(Java Platform,Micro Edition)。
这个版本以前称为 J2ME。Java ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
说得更简单片面一点:
Java SE是做电脑上运行的软件。
Java EE是用来做网站的-(我们常见的JSP技术)
Java ME是做手机软件的。
二、学习JAVA从哪开始?
或者我们可以说,需要先学习那个java版本?
有道是“万丈高楼平地起”,通过上面的介绍我们就可以知道,学习java编程,无论想从事哪个方面的程序开发,必须要把基础打好,因此,学习java应该从 java se开始学习。
java的JDK更新到什么版本了
Standard Edition(标准版)的最新版:jdk 14。
Early-Access(先行版)的最新版:jdk15。
LTS(长期支持版)的最新版:jdk 11.0.6。
JRE(Java Runtime Environment,Java运行时环境),包含了java虚拟机、java基础类库。是使用java语言编写的程序运行所需要的软件环境。
它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。
JDK(Java Development Kit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
jdk版本哪几个版本比较好用
JDK5
自动装箱与拆箱:
枚举
静态导入,如:import staticjava.lang.System.out
可变参数(Varargs)
内省(Introspector),主要用于操作JavaBean中的属性,通过getXxx/setXxx。一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。
泛型(Generic)(包括通配类型/边界类型等)
For-Each循环
注解
协变返回类型:实际返回类型可以是要求的返回类型的一个子类型
JDK6
1.AWT新增加了两个类:Desktop和SystemTray,其中前者用来通过系统默认程序来执行一个操作,如使用默认浏览器浏览指定的URL,用默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档等。后者可以用来在系统托盘区创建一个托盘程序。(开发中基本没用过)
2.使用JAXB2来实现对象与XML之间的映射,可以将一个Java对象转变成为XML格式,反之亦然
3.StAX,一种利用拉模式解析(pull-parsing)XML文档的API。类似于SAX,也基于事件驱动模型。之所以将StAX加入到JAXP家族,是因为JDK6中的JAXB2和JAX-WS 2.0中都会用StAX。
4.使用Compiler API,动态编译Java源文件,如JSP编译引擎就是动态的,所以修改后无需重启服务器。(刚知道是从这里开始可以动态编译的)
5.轻量级Http Server API,据此可以构建自己的嵌入式HttpServer,它支持Http和Https协议。
6.插入式注解处理API(PluggableAnnotation Processing API)
7.提供了Console类用以开发控制台程序,位于java.io包中。据此可方便与Windows下的cmd或Linux下的Terminal等交互。
8.对脚本语言的支持如: ruby,groovy, javascript
9.Common Annotations,原是J2EE 5.0规范的一部分,现在把它的一部分放到了J2SE 6.0中
10.嵌入式数据库 Derby(这个也是刚知道,基本没用过)
JDK7
1.对Java集合(Collections)的增强支持,可直接采用[]、{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象。如:
List<String>list=[“item1”,”item2”];//存
Stringitem=list[0];//直接取
Set<String>set={“item1”,”item2”,”item3”};//存
Map<String,Integer> map={“key1”:1,”key2”:2};//存
Intvalue=map[“key1”];//取12345
2.在Switch中可用String
3.数值可加下划线用作分隔符(编译时自动被忽略)
4.支持二进制数字,如:int binary= 0b1001_1001;
5.简化了可变参数方法的调用
6.调用泛型类的构造方法时,可以省去泛型参数,编译器会自动判断。
7.Boolean类型反转,空指针安全,参与位运算
8.char类型的equals方法: booleanCharacter.equalsIgnoreCase(char ch1, char ch2)
9.安全的加减乘除: Math.safeToInt(longv); Math.safeNegate(int v); Math.safeSubtract(long v1, int v2);Math.safeMultiply(int v1, int v2)……
10.Map集合支持并发请求,注HashTable是线程安全的,Map是非线程安全的。但此处更新使得其也支持并发。另外,Map对象可这样定义:Map map={name:”xxx”,age:18};
JDK8
1.接口的默认方法:即接口中可以声明一个非抽象的方法做为默认的实现,但只能声明一个,且在方法的返回类型前要加上“default”关键字。
2.Lambda表达式:是对匿名比较器的简化,如:
Collections.sort(names,(String a, String b)->{ returnb.compareTo(a);});1
对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字。如:1
Collections.sort(names,(String a, String b)-> b.compareTo(a));
或:Collections.sort(names,(a, b)-> b.compareTo(a));123
3.函数式接口:是指仅仅只包含一个抽象方法的接口,要加@FunctionalInterface注解
4.使用::关键字来传递方法或者构造函数引用
5.多重注解
6.还增加了很多与函数式接口类似的接口以及与Map相关的API等……
JDK9
jdk1.9新特性
1、Java平台级模块系统
当启动一个模块化应用时, JVM会验证是否所有的模块都能使用,这基于requires语句——比脆弱的类路径迈进了一大步。模块允许你更好地强制结构化封装你的应用并明确依赖。
2. Linking
当你使用具有显式依赖关系的模块和模块化的 JDK时,新的可能性出现了。你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK模块的依赖。为什么不使用这些信息创建一个最小的运行时环境,其中只包含运行应用程序所需的那些模块呢?这可以通过 Java 9中的新的 jlink工具实现。你可以创建针对应用程序进行优化的最小运行时映像而不需要使用完全加载 JDK安装版本。
3.JShell:交互式 Java REPL
许多语言已经具有交互式编程环境,Java现在加入了这个俱乐部。您可以从控制台启动 jshell,并直接启动输入和执行 Java代码。 jshell的即时反馈使它成为探索 API和尝试语言特性的好工具。
4.改进的 Javadoc
Javadoc现在支持在 API文档中的进行搜索。另外,Javadoc的输出现在符合兼容 HTML5标准。此外,你会注意到,每个 Javadoc页面都包含有关 JDK模块类或接口来源的信息。
5.集合工厂方法
通常,您希望在代码中创建一个集合(例如,List或 Set),并直接用一些元素填充它。实例化集合,几个“add”调用,使得代码重复。 Java 9,添加了几种集合工厂方法:
Set<Integer> ints= Set.of(1,2,3);List<String> strings= List.of("first","second");123
除了更短和更好阅读之外,这些方法也可以避免您选择特定的集合实现。事实上,从工厂方法返回已放入数个元素的集合实现是高度优化的。这是可能的,因为它们是不可变的:在创建后,继续添加元素到这些集合会导致“UnsupportedOperationException”。
6.改进的 Stream API
长期以来,Stream API都是 Java标准库最好的改进之一。通过这套 API可以在集合上建立用于转换的申明管道。在 Java 9中它会变得更好。Stream接口中添加了 4个新的方法:dropWhile, takeWhile, ofNullable。还有个 iterate方法的新重载方法,可以让你提供一个 Predicate(判断条件)来指定什么时候结束迭代:
IntStream.iterate(1, i-> i< 100, i-> i+ 1).forEach(System.out::println);1
第二个参数是一个 Lambda,它会在当前 IntStream中的元素到达 100的时候返回 true。因此这个简单的示例是向控制台打印 1到 99。
除了对 Stream本身的扩展,Optional和 Stream之间的结合也得到了改进。现在可以通过 Optional的新方法stram将一个 Optional对象转换为一个(可能是空的) Stream对象:
Stream<Integer> s= Optional.of(1).stream();1
在组合复杂的 Stream管道时,将 Optional转换为 Stream非常有用。
7.私有接口方法
使用 Java 9,您可以向接口添加私有辅助方法来解决此问题:
publicinterface MyInterface{
voidnormalInterfaceMethod();
default void interfaceMethodWithDefault(){ init();}
default void anotherDefaultMethod(){ init();}This method is not part of the public API exposed by MyInterface
privatevoidinit(){ System.out.println("Initializing");
}}12345678910111213
如果您使用默认方法开发 API,那么私有接口方法可能有助于构建其实现。
8. HTTP/2
Java 9中有新的方式来处理 HTTP调用。这个迟到的特性用于代替老旧的HttpURLConnectionAPI,并提供对 WebSocket和 HTTP/2的支持。注意:新的 HttpClient API在 Java 9中以所谓的孵化器模块交付。也就是说,这套 API不能保证 100%完成。不过你可以在 Java 9中开始使用这套 API:
HttpClient client= HttpClient.newHttpClient();HttpRequest req= HttpRequest.newBuilder(URI.create("http://www.google.com")).header("User-Agent","Java").GET().build();HttpResponse<String> resp= client.send(req, tpResponse.BodyHandler.asString());HttpResponse<String> resp= client.send(req,HttpResponse.BodyHandler.asString());1234
除了这个简单的请求/响应模型之外,HttpClient还提供了新的 API来处理 HTTP/2的特性,比如流和服务端推送。
9.多版本兼容 JAR
我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的 Java版本(许多情况下就是 Java 6或者 7)。这实际上意味着未来的很长一段时间,你都不能在库中运用 Java 9所提供的新特性。幸运的是,多版本兼容 JAR功能能让你创建仅在特定版本的 Java环境中运行库程序时选择使用的 class版本:
multirelease.jar
├──
META-INF
│
└── versions
│
└── 9
│
└── multirelease
│
└── Helper.class
├──
multirelease
├──1
Helper.class
└──1
Main.class
在上述场景中, multirelease.jar可以在 Java 9中使用,不过 Helper这个类使用的不是顶层的 multirelease.Helper这个 class,而是处在“META-INF/versions/9”下面的这个。这是特别为 Java 9准备的 class版本,可以运用 Java 9所提供的特性和库。同时,在早期的 Java诸版本中使用这个 JAR也是能运行的,因为较老版本的 Java只会看到顶层的这个 Helper类。
OK,关于javajdk需要什么版本的和java的JDK更新到什么版本了的内容到此结束了,希望对大家有所帮助。