Java8 대 Java9

Java8 Vs Java9



Java 8 대 Java 9: ​​알아야 할 Java 9의 개선 사항

많은 개발자가 응용 프로그램을 만들기 위해 Java로 전환합니다. 우리 모두가 알고 있듯이 Java는 믿을 수 없을 정도로 다재다능하고 사용하기 쉽고 안전하고 안정적이며 무엇보다도 플랫폼에 독립적입니다. Java에는 전 세계적으로 650만 명이 넘는 개발자가 있습니다. 그만큼 참고 자료도 풍부해서 사용하기 딱 좋은 언어입니다.

그럼에도 불구하고 Java는 수년에 걸쳐 계속해서 성장하고 발전해 왔습니다. 1995년 Sun Microsystems에서 제작 , Java는 그 신뢰성을 계속해서 증명해 왔습니다. 2014년 3월 18일부터 사용된 이전 Java 빌드는 Java SE 8이었습니다. 공개되었을 때 비평가들은 이것이 API의 변경 스트림 릴리스인 예술 작품이라고 말했습니다. 이제 블록에 새로운 아이가 있습니다. 갓 발행된 Java 9가 마침내 여기에 있습니다. 2017년 9월 21일 공개 , Java SE 9는 우리가 일을 하는 방식과 개발자가 애플리케이션을 만드는 방식을 뒤흔들 것으로 예상됩니다.







Java 8의 놀라운 민첩성과 다용도 덕분에 기업은 의료, 핀테크 및 기타 주요 부문과 같은 산업을 위한 놀라운 솔루션을 만들었습니다. 반면에 Java 9는 이를 기반으로 개발자에게 완전히 새로운 기능을 제공할 것을 약속합니다.



이제 Java 9의 새로운 기능을 살펴보겠습니다.



프로젝트 퍼즐

이것은 Java 9의 하이라이트 중 하나입니다. 기본적으로 프로젝트 퍼즐은 모듈화 자바의. 퍼즐 조각이 한 조각씩 모여 하나의 더 큰 그림을 그리는 것처럼 Java 9의 모듈성도 마찬가지입니다. 즉, 실행할 작업이나 기능으로 인해 코드가 여러 부분(모듈)으로 나뉩니다. 모듈화를 통해 코드를 훨씬 더 편안하게 재사용할 수 있을 뿐만 아니라 관리 및 디버깅도 간단하기 때문에 이는 큰 진전입니다. 이 때문에 개발자는 이전의 다른 빌드보다 Java 9로 애플리케이션을 더 쉽게 만들 수 있습니다.





모듈화의 또 다른 이점은 개발자가 이제 가볍고 확장 가능한 응용 프로그램을 만들 수 있다는 것입니다. 특히 사물 인터넷이 계속 성장함에 따라 Java로 작성된 그러한 앱이 더 많이 발견될 것입니다.

JEP 222: 제이쉘 : 자바 쉘

Java 9에는 새로운 REPL(읽기 평가 인쇄 루프) 도구가 있습니다. 아래의 개발 단계에 들어간 후 프로젝트 권리 이 기능이 마침내 대중에게 공개되었습니다. 이 새로운 기능은 Java로 작성된 표현식, 명령문 및 선언을 테스트하는 데 사용되는 대화식 도구입니다. JShell API 및 도구의 주요 목표는 개발자가 쉘 상태에서 위에서 언급한 기능을 테스트할 수 있는 기회를 제공하는 것입니다. 이것은 주로 빠른 코딩 및 조사이므로 표현식과 문이 메서드 내부에 있을 필요가 없고 메서드가 차례로 클래스 내부에 있을 필요가 없습니다. 이런 식으로 개발자는 코드 조각을 빠르게 분석하고 원하는 효과를 가져올지 확인할 수 있습니다.



jshell 도구에는 다음 기능이 포함된 명령줄 인터페이스가 있습니다.

  • 구성 가능한 사전 정의된 정의 및 가져오기.
  • 편집 기능이 있는 역사
  • 필요한 터미널 세미콜론 자동 추가

컴파일러 개선 사항

애플리케이션이 더 빠르게 실행되도록 Java 9에는 AoT(Ahead-of-Time) 컴파일이라는 새로운 기술이 도입되었습니다. 이 기술은 실험 단계에 있지만 가상 머신에서 시작되기 전에도 Java 클래스를 네이티브 코드로 컴파일할 수 있습니다. 이것의 가능성은 무한합니다. 그러나 이 기술을 보다 즉각적으로 사용하면 최고 성능을 저해하지 않고 크고 작은 앱의 시작 시간을 개선할 수 있습니다.

돌이켜보면 Java 8은 JIT(Just-in-time) 컴파일러를 사용합니다. 이러한 컴파일러는 빠르지만 워밍업 전에 시간이 조금 더 걸립니다. 컴파일할 코드가 많지 않기 때문에 소규모 프로그램이나 앱에서는 중요하지 않을 수 있습니다. 그러나 더 큰 앱의 경우 내러티브가 상당히 다릅니다. JIT 컴파일러가 필요로 하는 워밍업은 일부 메서드가 컴파일되지 않아 앱의 성능을 약화시킨다는 의미입니다.

스마트 컴파일 배포의 두 번째 단계는 Javac 도구의 이식성 및 안정성 향상입니다. 이 도구를 개선하면 JVM(Java Virtual Machine)에서 기본 설정으로 직접 사용할 수 있습니다. 그 외에도 개발자가 JDK 환경 외부에서도 사용할 수 있도록 도구를 일반화했습니다. 개발자에게 이것은 호환성에 대한 걱정 없이 쉽게 수용할 수 있는 더 큰 프로젝트에서 Java를 사용할 수 있기 때문에 큰 문제입니다. 또 다른 중요한 업데이트는 이전 Java 버전에서도 실행되도록 Java 9를 사용하여 만든 앱과 프로그램을 컴파일하는 것이 유일한 기능인 Javac 컴파일러의 이전 버전과의 호환성입니다.

더 나은 JavaScript 지원

JavaScript가 계속 추진력을 얻고 많은 사람들에게 인기를 얻으면서 JDK 9는 Java 앱에 JavaScript를 포함할 수 있게 했습니다. 이 모든 것은 의 도움으로 이루어집니다. 프로젝트 코뿔소 주요 목표는 Java에서 고성능이지만 가벼운 JavaScript 런타임을 만드는 것이었습니다. 이것은 물론 JDK 버전 8에서 JavaScript 엔진을 제공할 때 전달되었습니다. 이제 버전 9에는 대상이 Nashorn의 ECMAScript 구문 순서인 파서 API가 있습니다. 이 API가 하는 일은 Project Nashorn의 내부 구현 클래스에 의존하지 않고도 서버 측 프레임워크 및 IDE에서 ECMAScript 코드를 분석할 수 있도록 하는 것입니다.

가비지 컬렉터로서의 G1

일반적인 믿음과 달리 Java에는 하나가 아니라 네 개의 가비지 수집기가 있습니다. 이러한 가비지 수집기는 동일하게 생성되지 않으므로 잘못된 수집기를 선택하면 애플리케이션에서 성능 문제가 발생합니다. Java 8에서 기본 가비지 수집기는 병렬/처리량 수집기였습니다. 이 가비지 수집기는 이전의 G1(가비지 우선 수집기)으로 대체되었습니다. G1 수집기는 4GB보다 큰 힙을 효율적으로 지원하도록 설계되었으므로 소규모 및 대규모 애플리케이션 모두에 완벽한 가비지 수집기입니다.

API 업데이트

이 새 버전의 Java 개발 키트에서 API에 대한 몇 가지 업데이트가 이루어졌으며 가장 주목할만한 것에 대해 논의하겠습니다.

첫 번째는 Java.util.concurrent.Flow 및 CompletableFuture가 있는 Java 9 동시성 업데이트입니다. 배압이라는 문제를 해결하는 것을 목표로 합니다. Flow는 Java의 구현입니다. 반응 스트림 API 이는 본질적으로 배압 문제를 해결하는 것을 목표로 합니다. 역압은 들어오는 요청의 비율이 애플리케이션의 처리 능력보다 클 때 발생하는 데이터 축적입니다. 장기적으로 보면 애플리케이션이 처리되지 않은 데이터 버퍼로 끝나기 때문에 문제가 됩니다. 이 업데이트는 시간 초과, 지연 및 하위 분류에 대한 더 나은 처리를 의미합니다.

보안은 Java의 핵심 ID의 일부입니다. 이와 같이 새로 승인된 지원 HTTP 2.0 RFC는 큰 장점입니다. HTTP 2.0 RFC는 구글의 SPDY 알고리즘 이전 HTTP 1.1에서 11.81%에서 47.7% 범위의 속도 향상으로 이미 결실을 맺기 시작했습니다. 이 클라이언트 API는 핵심 HTTP 프로토콜과 HttpURLConnection API에 대한 업그레이드로, HTTP 1 이전에도 만들어졌기 때문에 문제가 됩니다.

코드 캐싱은 수년 동안 애플리케이션을 더 빠르고 원활하게 만드는 데 항상 사용되는 전략이었습니다. 그러나 한계가 없는 것은 아니며, 이것이 눈에 띄지 않습니다. Java 9의 업데이트는 JDK 9가 캐시된 코드를 더 작은 부분으로 분할하여 전반적인 성능을 향상시키는 것을 명확하게 보여줍니다. JDK 9는 특수 반복자를 사용하여 비메서드 코드를 건너뜁니다. 프로파일링된, 프로파일링되지 않은 및 메소드가 아닌 코드를 분리합니다. 실행 시간에 대한 몇 가지 벤치마크를 개선합니다.

자바 9의 장점

많은 비즈니스 소유자에게 Java 8과 9 사이에는 차이가 없습니다. 그러나 개발자에게는 차이의 세계가 있습니다. 이것이 Java SE 9가 이전 버전에 비해 제공하는 이점입니다.

  • 관리 및 디버그가 더 쉬울 뿐만 아니라 전체 코드를 처음부터 작성할 필요가 없다는 의미에서 재사용이 가능한 모듈 시스템 덕분에 개발 속도가 크게 향상됩니다.
  • 모듈화로 애플리케이션에 대한 리소스 효율성을 높이고 개발자가 전체 JRE 대신 필요한 모듈만 사용하므로 리소스 풀링이 더 간단해집니다.
  • 다음과 같은 코드 조각의 실시간 분석 마이크로 벤치마크 작은 코드 조각의 성능을 조사하는 데 사용됩니다.

출처

http://openjdk.java.net/jeps/251
https://www.romexsoft.com/blog/java-8-vs-java-9/
https://blogs.oracle.com/java/features-in-java-8-and-9
https://dzone.com/articles/5-features-in-java-9-that-will-change-how-you-deve

이클립스 자바 튜토리얼