作为一名java工程师,无论你是初学者还是资深工程师,对于java开发者来说,掌握好java新特性乃是一件非常重要的事情。而从java9开始,JDK逐步引入新的特性以便于更好地编写和优化java开发。
一、JDK新特性
自从java8的lambda表达式引入之后,JDK也加入了大量方便开发者使用的函数式编程接口。而在工程师实际开发过程中,JDK也不断完善和优化API。这些API的变动对于开发者来说,有时候会增加代码的可读性和维护性,而有时候则相反。
比如说,JDK的Arrays.sort方法在JDK8之后支持对基本数据类型的排序,但在JDK11中,却出现了对排序算法的切换及默认排序方式的变更,这些变化都对开发者的使用造成了一定程度的影响。
二、JDK对模块化的支持
模块化是JDK9中引入的新特性,通过对软件工程的模块化来消除JAR包中存在的一些问题。在这个过程中,JDK引入了Java Platform Module System (JPMS),用于实现JDK各个工具及应用之间的软件工程化。
由于Java平台在过去经历了十多年的迭代发展,从此次引入普遍模块化之后,将使得使用Java开发的工程师们更容易构建和实现大型的代码库。
三、JIT即时编译
JIT(Just-In-Time)即时编译,可使得Java语言得到迅速的性能提升。JDK引入JIT编译器,并提供高效的动态生成Java字节码的方式,在运行时进行代码优化。通过对Java虚拟机中的代码进行机器语言的级别编译,可以让Java应用程序运行效率得到很大的提高。需要注意的是,Java应用程序的运行时间也会随着JIT编译器的增加而有所增加。
四、HTTP/2的支持
从JDK9开始,Java平台默认提供了完整的HTTP/2 API支持,并内置了Jetty和Apache HttpClient等开源 HTTP客户端框架,使得开发者能够快速地部署和管理Web应用程序,并使用应用管理API进行生命周期管理。
HTTP/2通过多路复用技术来替代HTTP/1.x的序列化请求和响应,可以更加高效的传输数据,还支持二进制协议。而在JDK10中,Java还引入了另一个特性:TLS安全协议支持改进,这个特性可以让应用程序的安全级别得到更大的提升。
综上所述,JDK的新特性优化了开发者的工作,并提高了Java应用程序的性能和安全性,值得我们深入学习和使用。
代码示例
public class JavaNewFeatureDemo {
// JDK-11:String中的新方法repeat
private static final String SALUTATION = "Hello, JavaNewMap! ";
public static void main(String[] args) {
// JDK-9:私有接口方法 demo
Account obj = new AccountImpl();
obj.operation(5555);
// JDK-9:try-with-resource的扩展
BufferedReader reader = new BufferedReader(new FileReader("JavaNewFeature.txt"));
try (reader) {
// JDK-11:String中的新方法repeat
System.out.println(SALUTATION.repeat(3));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 接口中的私有方法demo
*/
interface Account {
default void deposit(int amount) {
System.out.println("存入 " + amount);
addTransactionLog(amount);
}
default void withdraw(int amount) {
System.out.println("取出 " + amount);
addTransactionLog(-amount);
}
private void addTransactionLog(int amount) {
System.out.println("写入日志为: " + amount);
}
public void operation(int amount);
}
class AccountImpl implements Account {
@Override
public void operation(int amount) {
deposit(amount);
withdraw(amount);
}
}
原创文章,作者:ZERO,如若转载,请注明出处:https://www.506064.com/n/141340.html
微信扫一扫
支付宝扫一扫