소프트웨어 개발을 변화시킬 5가지 새로운 Java 9 기능
预计发布的Java 9中,最令人兴奋的特性是什么?
有关Java9的消息最近显得有些沉寂,不要被它迷惑了。JDK开发者正在努力朝着下一个版本迈进,计划2015年12月前完成所有功能开发。之后,它会经历严格测试和bug修复以准备它的全面上市,按计划会在2016年9月发布。
今天我们已经对Java 9中所期待的特性有了一个很清晰的图景。如果Java 8可以被描述为主要是lambdas表达式、streams和API变化的话,那么Java 9就是关于Jigsaw、额外的实用工具和内部的变化。在这篇文章中,收集了一些我们认为是Java 9中最期待的特性——除了通常的猜测之外,Jigsaw项目,承担了打破JRE并对Java核心组件模块化的使命。
这里有一些特性是Java 9中绝对必要了解的,其中的一些已经在早期的发布版本中为你捣鼓做好了准备。
1.Java + REPL = jshell
是的。之前我们怀疑Kulla项目是否会在Java 9中准时发布,但现在已得到了官方确认。下一版发布的Java将会有称为jshell的新命令行工具,它会添加本地支持和以Java方式对REPL(交互式解释器)进行推广。意思是说,如果你想只运行几行Java代码,你不必把它包装进一个单独的工程或者方法。
噢,你可以忘掉那些分号了:
-> 2 + 2 | 表达式的值是4 | 将临时变量$1的类型设为int
还有一些像REPL加载项一样的替代品会增加到流行的IDE和解决方案中,就像Java REPL网页控制台。但目前为止,还没有官方的或者合适的方式来这么做。jshell在早期的版本中已经可以用了,等着你给它来个测试运行。
2、微基准测试要来了
由Alexey Shipilev开发的Java微基准测试套件(Java Microbenchmarking Harness)正在其进化的下一阶段,并加入Java作为官方基准解决方案。我们真的很喜欢在Takipi做基准,所以一套标准化的执行方式是我们期待的。
JHM是一组用来编译、运行和分析nano/micro/milli/macro基准的套件。当涉及到精确基准评估,对结果产生很大影响的能力将备受关注,比如预热时间和优化。当你以微秒或纳秒计时的情况下尤其如此。所以,如果你想要更加精确的结果来帮助跟踪基准以做出正确的决定,JMH是你的最佳选择——并且现在它已经成为Java 9的同义词了。
3、G1会成为新的默认垃圾收集器吗?
我们经常听说的一个误解是:Java只有一个垃圾收集器,而事实上它有4个。Java 9中,仍有一个运行提议,关于替换由Java 7引入的G1默认垃圾收集器(并行/吞吐量收集)的讨论。不同收集器之间差别精简概述,可以查看这篇里的文章。
通常来说,G1被设计来更好地支持大于4GB的堆,并且不会造成频繁的GC暂停,但当暂停发生时,往往会处理更长时间。最近我们和Outbrain的性能专家Haim Yadid讨论了关于GC的方方面面,来帮助你了解更多各收集器之间不同的权衡。同样,如果你想要深入了解相关讨论,那么hotspot-dev和jdk9-dev的邮件组是个开始学习不错的地方。
4、未来是HTTP 2.0
官方的HTTP 2.0标准是几个月之前被批准的,基于Google的SPDY算法构建。SPDY已经展示了相对HTTP 1.1巨大的速度提升,范围在11.81%到47.7%之间,并且它已经存在于大多数现代的浏览器中了。Java 9将全面支持HTTP 2.0,并且为Java配备一个全新的HTTP客户端来替代HttpURLConnection,并且同时还实现HTTP 2.0和websockets。
5、进程API得到了巨大的推动
到目前为止,通过Java来控制和管理操作系统进程能力有限。例如在早期版本的Java中,为了做一些简单的事情,像得到进程PID,要么访问本机代码,要么用某种神奇的临时解决方法。此外,还可能需要一个对于每个平台提供不同实现来保证你得到正确的结果。
在Java 9中,除了获取Linux PID的代码,现在都像这样来获取:
public static void main(String[] args) throws Exception { Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" }); if (proc.waitFor() == 0) { InputStream in = proc.getInputStream(); int available = in.available(); byte[] outputBytes = new byte[available]; in.read(outputBytes); String pid = new String(outputBytes); System.out.println("Your pid is " + pid); } }
转向像这样的代码(同样也支持所有的操作系统):
System.out.println("Your pid is" + Process.getCurrentPid());
这一更新将扩展Java与操作系统交互的能力:全新的直接操作PID、进程名和状态的方法,操作JVM线程和进程等等能力。
你不会在Java 9中见到什么?
我们以为两个有趣的特性会作为即将到来的Java发布版本中的一部分——但现在我们知道它们将不会出现在这次发布的版本。
1、一个标准的轻量级JSON API
在我们进行的一项对350名开发人员的调查中,JSON API就像Jigsaw一样被大肆宣传,但看起来它好像没在发布版本中,原因可能是资金问题。Mark Reinhold,Java平台的首席架构师,在JDK 9的邮件列表中写到:
“这个JEP对于平台来说是个有益的补充,但长远来看,考虑到资金的因素以及Oracle资助的其它特性,它并不如其它特性一样重要。我们考虑可能在JDK 10或者之后的版本再发布这个JEP。”
2、金钱和货币API
有一条新闻,似乎看起来金钱和货币API也缺少Oracle的支持。这是我们从Anatole Tresch那里得到的答案,这个API的产品推广师:
@tkfxin 目前不会。从Oracle那里没得到支持。取而代之的,我们将提高Java EE支持并且spring也将支持它 :)
– Anatole Tresch (@atsticks) 2015年6月16日

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP8.3 출시: 새로운 기능 개요 기술이 계속 발전하고 변화가 필요함에 따라 프로그래밍 언어는 지속적으로 업데이트되고 개선됩니다. 웹 개발에 널리 사용되는 스크립팅 언어인 PHP는 개발자에게 더욱 강력하고 효율적인 도구를 제공하기 위해 지속적으로 개선되어 왔습니다. 최근 출시된 PHP 8.3 버전에는 오랫동안 기다려온 많은 새로운 기능과 개선 사항이 포함되어 있습니다. 이러한 새로운 기능에 대한 개요를 살펴보겠습니다. null이 아닌 속성의 초기화 이전 버전의 PHP에서는 클래스 속성에 명시적으로 값이 할당되지 않은 경우 해당 값은

최신 기술을 익히는 데 도움이 되는 PHP8의 새로운 기능에 대한 심층 분석입니다. 시간이 지남에 따라 PHP 프로그래밍 언어는 지속적으로 발전하고 개선되었습니다. 최근 출시된 PHP8 버전은 개발자에게 많은 흥미로운 새로운 기능과 개선 사항을 제공하여 개발 작업에 더 많은 편의성과 효율성을 제공합니다. 이 기사에서는 PHP8의 새로운 기능을 심층적으로 분석하고 이러한 최신 기술을 더 잘 익히는 데 도움이 되는 특정 코드 예제를 제공합니다. JIT 컴파일러 PHP8에는 JIT(Just-In-Time) 컴파일이 도입되었습니다.

PHP8.1에 도입된 새로운 Redis 확장 기능 인터넷의 급속한 발전으로 인해 많은 양의 데이터를 저장하고 처리해야 합니다. 데이터 처리의 효율성과 성능을 향상시키기 위해 캐싱은 필수적인 부분이 되었습니다. PHP 개발에서 고성능 키-값 스토리지 시스템인 Redis는 캐싱 및 데이터 스토리지 시나리오에 널리 사용됩니다. PHP에서 Redis를 사용하는 경험을 더욱 향상시키기 위해 PHP8.1에서는 새로운 Redis 확장 기능을 소개합니다. 이 기사에서는 이 확장 기능의 새로운 기능을 소개하고 제공할 것입니다.

CSS3의 새로운 기능 개요: CSS3를 사용하여 전환 효과를 얻는 방법 CSS3는 많은 새로운 기능 중에서 가장 흥미롭고 실용적인 기능은 전환 효과입니다. 전환 효과는 상호 작용 중에 페이지를 더 부드럽고 아름답게 만들어 사용자에게 좋은 시각적 경험을 제공할 수 있습니다. 이 기사에서는 CSS3 전환 효과의 기본 사용법을 해당 코드 예제와 함께 소개합니다. 전환 속성 속성: 전환해야 하는 CSS 속성 전환 효과를 지정합니다.

[Go 언어의 새로운 기능 해석: 프로그래밍을 보다 효율적으로 만들기 위해서는 구체적인 코드 예제가 필요합니다.] 최근 소프트웨어 개발 분야에서 Go 언어가 많은 주목을 받고 있으며, Go 언어의 단순하고 효율적인 디자인 개념이 점점 더 주목을 받고 있습니다. 개발자. 정적으로 유형이 지정된 프로그래밍 언어인 Go 언어는 개발 효율성을 향상하고 코드 작성 프로세스를 단순화하는 새로운 기능을 계속해서 도입하고 있습니다. 이 글에서는 Go 언어의 최신 기능에 대해 심층적으로 설명하고, 구체적인 코드 예제를 통해 이러한 새로운 기능이 제공하는 편리함을 경험하는 방법을 논의할 것입니다. 모듈형 개발(GoModules) 1부터 Go 언어

php8의 새로운 기능에는 JIT 컴파일러, 유형 추론, 명명된 매개변수, 공용체 유형, 속성, 오류 처리 개선, 비동기 프로그래밍 지원, 새로운 표준 라이브러리 함수 및 익명 클래스 확장이 포함됩니다. 자세한 소개: 1. JIT 컴파일러, PHP8은 중요한 성능 향상을 제공하는 JIT 컴파일러를 도입하여 일부 고주파 실행 코드를 실시간으로 컴파일하고 최적화하여 실행 속도를 향상시킵니다. 개발자가 변수 등을 선언할 때 변수의 유형을 자동으로 추론할 수 있도록 유형 추론 기능을 도입합니다.

CSS3의 새로운 기능 개요: CSS3를 사용하여 가로 중심 레이아웃을 구현하는 방법 웹 디자인 및 레이아웃에서 가로 중심 레이아웃은 일반적인 요구 사항입니다. 과거에는 이를 달성하기 위해 종종 복잡한 JavaScript 또는 CSS 트릭을 사용했습니다. 그러나 CSS3에는 가로 중심 레이아웃을 더 간단하고 유연하게 만드는 몇 가지 새로운 기능이 도입되었습니다. 이 기사에서는 CSS3의 몇 가지 새로운 기능을 소개하고 CSS3를 사용하여 가로 중심 레이아웃을 구현하는 방법을 보여주는 몇 가지 코드 예제를 제공합니다. 1. Flexbox를 사용하여 파일 레이아웃

Go 언어의 새로운 기능은 다음과 같습니다: 1. Go 언어 프로젝트의 종속성을 관리하는 데 사용되는 Go 모듈 2. 오류 처리, 새로운 오류 유형 오류 추가, 오류 처리를 보다 유연하고 간결하게 만들기 3. 사용되는 컨텍스트 패키지 고루틴 간에 요청 범위 값을 전송합니다. 4. 내장, 즉 하나의 구조를 다른 구조에 내장할 수 있습니다. 5. 동기화 패키지, 고루틴 간의 동기화 및 통신을 더 잘 제어합니다. 7. 제네릭을 사용하면 개발자가 더 유연하게 작성할 수 있습니다.
