Offcanvas

JVM

아줄, ‘클라우드 네이티브 컴파일러’ 출시··· “클라우드에 자바 컴파일 제공”

‘클라우드 네이티브 컴파일러(Cloud Native Compiler)’ 서비스는 JVM 전체에서 이전에 최적화된 컴파일을 재사용하여 자바 애플리케이션 성능을 향상시킨다.    자바 소프트웨어 업체 아줄(Azul)이 JVM의 성능 및 시작 속도를 높이는 클라우드 기반 컴파일 서비스 ‘클라우드 네이티브 컴파일러’를 출시했다. 이를 통해 자바(Java), 스칼라(Scala), 코틀린(Kotlin), 클로저(Clojure), 그루비(Groovy), 제이루비(JRuby) 등 JVM 기반 언어의 성능이 향상됐다고 회사 측은 밝혔다.  회사에 따르면 아줄 인텔리전스 클라우드(Azul Intelligence Cloud) 플랫폼의 제품으로 공개된 클라우드 네이티브 컴파일러는 연결되는 모든 JVM의 성능 및 시작 속도를 강화하기 위해 JVM 전체에서 이전에 최적화된 컴파일을 탄력적으로 확장 및 축소하고 재사용한다. 또한 모든 자바 애플리케이션과 호환되는 클라우드 네이티브 컴파일러는 JVM(Java Virtual Machine)에서 JIT(Just-in-tim) 컴파일을 분리하며, 징(Zing)이라고 알려진 아줄의 고성능 자바 런타임 ‘플랫폼 프라임(Platform Prime Java)’과 함께 작동한다고 회사 측은 설명했다.    클라우드 네이티브 컴파일러는 전체 쿠버네티스 환경에서 클라우드 네이티브 애플리케이션으로 실행된다. 모든 클라우드에서 사용할 수 있다. 이 밖에 클라우드 네이티브 컴파일러로 얻을 수 있는 이점은 다음과 같다.  • JIT 컴파일을 클라우드 리소스로 전환해 운영 비용을 절감할 수 있다.  • 프론트엔드, 백엔드, API 게이트웨이, 컨테이너화된 애플리케이션, 마이크로서비스를 포함한 여러 애플리케이션의 처리량 및 응답성을 향상시켜 애플리케이션 성능을 개선한다.  • 아파치(Apache)의 카산드라(Cassandra) 데이터베이스, 솔라(Solr) 검색엔진, 카프카(Kaf...

자바 아줄 클라우드 컴파일러 스칼라 코틀린 클로저 그루비 제이루비 자바 애플리케이션 JVM JIT 쿠버네티스 컨테이너

2021.12.16

‘클라우드 네이티브 컴파일러(Cloud Native Compiler)’ 서비스는 JVM 전체에서 이전에 최적화된 컴파일을 재사용하여 자바 애플리케이션 성능을 향상시킨다.    자바 소프트웨어 업체 아줄(Azul)이 JVM의 성능 및 시작 속도를 높이는 클라우드 기반 컴파일 서비스 ‘클라우드 네이티브 컴파일러’를 출시했다. 이를 통해 자바(Java), 스칼라(Scala), 코틀린(Kotlin), 클로저(Clojure), 그루비(Groovy), 제이루비(JRuby) 등 JVM 기반 언어의 성능이 향상됐다고 회사 측은 밝혔다.  회사에 따르면 아줄 인텔리전스 클라우드(Azul Intelligence Cloud) 플랫폼의 제품으로 공개된 클라우드 네이티브 컴파일러는 연결되는 모든 JVM의 성능 및 시작 속도를 강화하기 위해 JVM 전체에서 이전에 최적화된 컴파일을 탄력적으로 확장 및 축소하고 재사용한다. 또한 모든 자바 애플리케이션과 호환되는 클라우드 네이티브 컴파일러는 JVM(Java Virtual Machine)에서 JIT(Just-in-tim) 컴파일을 분리하며, 징(Zing)이라고 알려진 아줄의 고성능 자바 런타임 ‘플랫폼 프라임(Platform Prime Java)’과 함께 작동한다고 회사 측은 설명했다.    클라우드 네이티브 컴파일러는 전체 쿠버네티스 환경에서 클라우드 네이티브 애플리케이션으로 실행된다. 모든 클라우드에서 사용할 수 있다. 이 밖에 클라우드 네이티브 컴파일러로 얻을 수 있는 이점은 다음과 같다.  • JIT 컴파일을 클라우드 리소스로 전환해 운영 비용을 절감할 수 있다.  • 프론트엔드, 백엔드, API 게이트웨이, 컨테이너화된 애플리케이션, 마이크로서비스를 포함한 여러 애플리케이션의 처리량 및 응답성을 향상시켜 애플리케이션 성능을 개선한다.  • 아파치(Apache)의 카산드라(Cassandra) 데이터베이스, 솔라(Solr) 검색엔진, 카프카(Kaf...

2021.12.16

코틀린 최신 로드맵 공개··· “컴파일러 및 모바일 기능 개선”

젯브레인에서 만든 JVM, 자바스크립트, 안드로이드 개발용 프로그래밍 언어 ‘코틀린(Kotlin)’의 최신 로드맵이 공개됐다. 해당 로드맵에 따르면 컴파일러 및 모바일 기능이 개선될 예정이다.  코틀린 1.7.0과 그 이후 버전에 대한 로드맵이 젯브레인 공식 블로그에서 지난 11월 10일(현지 시각) 발표됐다. 현재 사용할 수 있는 최신 버전은 코틀린 1.5.31이다(11월 17일 기준).    젯브레인은 컴파일러와 관련해 ‘K2 컴파일러 프론트엔드’ 작업을 알파 상태로 만드는 데 주력하고 있다고 밝혔다. K2는 코드 분석 그리고 IR(Intermediate Representation)로의 변환을 담당하는 프론트엔드와 함께, 컴파일 속도가 평균 2배 더 빠른 언어 컴파일러라고 코틀린 개발팀은 설명했다.  또한 K2 알파 릴리즈에서는 새로운 플러그인 인프라를 프리뷰로 제공할 계획이다. 아울러 K2 컴파일러로 멀티플랫폼 프로젝트를 구축할 수 있는 비-JVM 백엔드 지원에도 투자하고 있다고 개발팀은 덧붙였다.  이 밖에 최신 로드맵에 업데이트된 내용은 다음과 같다.  • iOS와 안드로이드를 포함한 플랫폼 간 코드 공유 기술 ‘KMM(Kotlin Multiplatform Mobile)’이 2022년 봄에 베타 릴리즈 단계로 진입한다. 해당 버전에서는 코드 강조 표시, 탐색 및 완성, 디버깅, 빌드 도구 안정성 문제가 수정되는 한편 동시성도 개선될 예정이다.  • 새로운 네임스페이스 개념의 프로토타입이 제공될 계획이다. 이를 통해 모든 클래스가 자동으로 소유하는 인스턴스 없이 임시 객체를 제공할 수 있다. 네임스페이스 멤버는 JVM의 정적 멤버로 컴파일된다. 이 계획은 자바(Java) 정적 메소드와의 상호 운용성을 개선하고, 모든 자바 유형에서 확장을 가능하게 하기 위해 고안됐다.  • 코드 커버리지를 측정하는 그래들(Gradle) 플러그인 ‘코버(Kover)’가 도입된다. ...

코틀린 프로그래밍 언어 개발 언어 젯브레인 모바일 개발 소프트웨어 개발 자바 JVM 자바스크립트 안드로이드 iOS 컴파일러

2021.11.17

젯브레인에서 만든 JVM, 자바스크립트, 안드로이드 개발용 프로그래밍 언어 ‘코틀린(Kotlin)’의 최신 로드맵이 공개됐다. 해당 로드맵에 따르면 컴파일러 및 모바일 기능이 개선될 예정이다.  코틀린 1.7.0과 그 이후 버전에 대한 로드맵이 젯브레인 공식 블로그에서 지난 11월 10일(현지 시각) 발표됐다. 현재 사용할 수 있는 최신 버전은 코틀린 1.5.31이다(11월 17일 기준).    젯브레인은 컴파일러와 관련해 ‘K2 컴파일러 프론트엔드’ 작업을 알파 상태로 만드는 데 주력하고 있다고 밝혔다. K2는 코드 분석 그리고 IR(Intermediate Representation)로의 변환을 담당하는 프론트엔드와 함께, 컴파일 속도가 평균 2배 더 빠른 언어 컴파일러라고 코틀린 개발팀은 설명했다.  또한 K2 알파 릴리즈에서는 새로운 플러그인 인프라를 프리뷰로 제공할 계획이다. 아울러 K2 컴파일러로 멀티플랫폼 프로젝트를 구축할 수 있는 비-JVM 백엔드 지원에도 투자하고 있다고 개발팀은 덧붙였다.  이 밖에 최신 로드맵에 업데이트된 내용은 다음과 같다.  • iOS와 안드로이드를 포함한 플랫폼 간 코드 공유 기술 ‘KMM(Kotlin Multiplatform Mobile)’이 2022년 봄에 베타 릴리즈 단계로 진입한다. 해당 버전에서는 코드 강조 표시, 탐색 및 완성, 디버깅, 빌드 도구 안정성 문제가 수정되는 한편 동시성도 개선될 예정이다.  • 새로운 네임스페이스 개념의 프로토타입이 제공될 계획이다. 이를 통해 모든 클래스가 자동으로 소유하는 인스턴스 없이 임시 객체를 제공할 수 있다. 네임스페이스 멤버는 JVM의 정적 멤버로 컴파일된다. 이 계획은 자바(Java) 정적 메소드와의 상호 운용성을 개선하고, 모든 자바 유형에서 확장을 가능하게 하기 위해 고안됐다.  • 코드 커버리지를 측정하는 그래들(Gradle) 플러그인 ‘코버(Kover)’가 도입된다. ...

2021.11.17

“단일 창으로 자바 배포 관리”··· 오라클, JMS 출시

오라클이 온프레미스 또는 클라우드에서 자바 런타임 및 애플리케이션 관리를 지원하는 엔터프라이즈 서비스를 공개했다.    오라클 클라우드 인프라스트럭쳐(OCI)의 새로운 기본 서비스 ‘자바 매니지먼트 서비스(Java Management Service; JMS)’가 지난 6월 9일 GA 버전으로 출시됐다. 오라클 자바 스탠더드 에디션(Oracle Java Standard Edition) 고객을 위한 기능으로 포함된 관리 서비스는 엔터프라이즈 전체에서 자바 배포를 관리할 수 있는 ‘단일 창’을 제공해 다음과 같은 문제를 해결한다.   • 기업 환경에 설치된 모든 자바 버전은 무엇인가? • 개발 및 프로덕션에서 실행 중인 자바 버전은 무엇인가?  • 어떤 JDK(Java Development Kit) 배포가 사용되고 있는가?  • 권한 없는 자바 애플리케이션이 실행되고 있는가? • 설치된 모든 자바 버전이 최신 보안 패치로 업데이트돼 있는가?  회사에 따르면 JMS는 JVM의 원격 측정 데이터를 기반으로 지속적인 인사이트를 제공해 컴플라이언스, 효율성, 성능, 보안 지표를 분석한다. 예를 들어 일반적으로 암호 사용은 블랙박스이며, 만료된 인증서나 비활성화된 알고리즘은 무언가가 손상되거나 악의적 공격이 발생한 후에 발견되는 경우가 많다고 오라클은 설명했다.  또 JMS를 사용하면 OCI, 온프레미스 데스크톱, 노트북, 서버, 서드파티 클라우드 서비스에서 실행되는 자바 사용량을 추적할 수 있다고 회사 측은 전했다. JDK, JRE(Java Runtime Environment), GraalVM도 모니터링한다. 이 밖에 매니지드 인스턴스에 설치된 JMS 에이전트를 통해 자바 사용 원격 측정 데이터를 수집한다.  JMS는 오라클 자바 SE(Oracle Java SE)에 포함된 기능이다. 해당되는 고객이라면 추가 구독 비용은 들지 않지만 이를 실행하는 경우 수억 개의 데이터 포인트를 지원하는 OC...

오라클 자바 오라클 클라우드 인프라스트럭쳐 클라우드 온프레미스 JDK JVM JRE

2021.06.14

오라클이 온프레미스 또는 클라우드에서 자바 런타임 및 애플리케이션 관리를 지원하는 엔터프라이즈 서비스를 공개했다.    오라클 클라우드 인프라스트럭쳐(OCI)의 새로운 기본 서비스 ‘자바 매니지먼트 서비스(Java Management Service; JMS)’가 지난 6월 9일 GA 버전으로 출시됐다. 오라클 자바 스탠더드 에디션(Oracle Java Standard Edition) 고객을 위한 기능으로 포함된 관리 서비스는 엔터프라이즈 전체에서 자바 배포를 관리할 수 있는 ‘단일 창’을 제공해 다음과 같은 문제를 해결한다.   • 기업 환경에 설치된 모든 자바 버전은 무엇인가? • 개발 및 프로덕션에서 실행 중인 자바 버전은 무엇인가?  • 어떤 JDK(Java Development Kit) 배포가 사용되고 있는가?  • 권한 없는 자바 애플리케이션이 실행되고 있는가? • 설치된 모든 자바 버전이 최신 보안 패치로 업데이트돼 있는가?  회사에 따르면 JMS는 JVM의 원격 측정 데이터를 기반으로 지속적인 인사이트를 제공해 컴플라이언스, 효율성, 성능, 보안 지표를 분석한다. 예를 들어 일반적으로 암호 사용은 블랙박스이며, 만료된 인증서나 비활성화된 알고리즘은 무언가가 손상되거나 악의적 공격이 발생한 후에 발견되는 경우가 많다고 오라클은 설명했다.  또 JMS를 사용하면 OCI, 온프레미스 데스크톱, 노트북, 서버, 서드파티 클라우드 서비스에서 실행되는 자바 사용량을 추적할 수 있다고 회사 측은 전했다. JDK, JRE(Java Runtime Environment), GraalVM도 모니터링한다. 이 밖에 매니지드 인스턴스에 설치된 JMS 에이전트를 통해 자바 사용 원격 측정 데이터를 수집한다.  JMS는 오라클 자바 SE(Oracle Java SE)에 포함된 기능이다. 해당되는 고객이라면 추가 구독 비용은 들지 않지만 이를 실행하는 경우 수억 개의 데이터 포인트를 지원하는 OC...

2021.06.14

“전면 개편” 스칼라 3 출시··· 유형 시스템 및 구문 개선

JVM과 자바스크립트 런타임에서 실행할 수 있는 객체 지향 및 함수형 언어의 최신 버전 ‘스칼라 3(Scala 3)’가 프로덕션 릴리즈로 출시됐다. 개발팀에서 ‘전면 개편(complete overhaul)’이라고 설명하는 이번 업그레이드는 새로운 유형 시스템과 구문 개선을 특징으로 한다.    스칼라 3는 지난 2월 17일 릴리즈 캔디데이트(RC) 버전을 선보인 데 이어 5월 14일 프로덕션 릴리즈를 공개했다. 개발팀은 스칼라 3에서 ‘if’, ‘while’, ‘for’과 같은 제어 구조를 위한 ‘quite’ 구문이 새롭게 추가됐다고 전했다. 이 밖에 스칼라 3의 구문 개선 사항은 다음과 같다.  • 들여쓰기에 민감한 프로그래밍 스타일을 지원하는 선택적 중괄호 • 선택사항으로 제공하는 new 키워드 • _에서 ?으로 변경된 유형-레벨 와일드카드 • 대폭 수정된 암시(Implicits)와 해당 구문  스칼라 3의 새로운 언어 기능은 아래와 같다.  • using 절을 유형별로 지정할 수 있기 때문에 명시적으로 참조되지 않은 용어 변수 이름에서 함수 서명을 해제할 수 있다.  • 주어진 인스턴스로 특정 유형의 표준값을 정의할 수 있다. 구현 세부 사항을 유출하지 않고 유형 클래스를 사용하는 프로그래밍을 더욱더 쉽게 수행할 수 있다. • 이제 확장 메소드가 언어에 직접 내장돼 향상된 오류 메시지와 유형 추론을 지원한다.  • 암시적 변환이 유형 클래스 Conversion의 인스턴스로 재설계됐다.  • 컨텍스트 함수의 새로운 기능은 컨텍스트 추상화를 1급 객체로 만든다. 이는 라이브러리 저자가 간결한 도메인별 언어를 표현할 수 있는 도구 역할을 한다.  • 컴파일러가 암시적 매개변수를 확인할 수 없다면 이 문제를 해결할 수 있는 가져오기 제안이 제공된다.  스칼라 3의 유형 시스템 개선 사항은 다음과 같다.  • 열거형(Enums or enumerations...

스칼라 JVM 자바스크립트 런타임 객체 지향 함수형 언어 프로그래밍 언어 개발 언어 자바 소프트웨어 개발

2021.05.17

JVM과 자바스크립트 런타임에서 실행할 수 있는 객체 지향 및 함수형 언어의 최신 버전 ‘스칼라 3(Scala 3)’가 프로덕션 릴리즈로 출시됐다. 개발팀에서 ‘전면 개편(complete overhaul)’이라고 설명하는 이번 업그레이드는 새로운 유형 시스템과 구문 개선을 특징으로 한다.    스칼라 3는 지난 2월 17일 릴리즈 캔디데이트(RC) 버전을 선보인 데 이어 5월 14일 프로덕션 릴리즈를 공개했다. 개발팀은 스칼라 3에서 ‘if’, ‘while’, ‘for’과 같은 제어 구조를 위한 ‘quite’ 구문이 새롭게 추가됐다고 전했다. 이 밖에 스칼라 3의 구문 개선 사항은 다음과 같다.  • 들여쓰기에 민감한 프로그래밍 스타일을 지원하는 선택적 중괄호 • 선택사항으로 제공하는 new 키워드 • _에서 ?으로 변경된 유형-레벨 와일드카드 • 대폭 수정된 암시(Implicits)와 해당 구문  스칼라 3의 새로운 언어 기능은 아래와 같다.  • using 절을 유형별로 지정할 수 있기 때문에 명시적으로 참조되지 않은 용어 변수 이름에서 함수 서명을 해제할 수 있다.  • 주어진 인스턴스로 특정 유형의 표준값을 정의할 수 있다. 구현 세부 사항을 유출하지 않고 유형 클래스를 사용하는 프로그래밍을 더욱더 쉽게 수행할 수 있다. • 이제 확장 메소드가 언어에 직접 내장돼 향상된 오류 메시지와 유형 추론을 지원한다.  • 암시적 변환이 유형 클래스 Conversion의 인스턴스로 재설계됐다.  • 컨텍스트 함수의 새로운 기능은 컨텍스트 추상화를 1급 객체로 만든다. 이는 라이브러리 저자가 간결한 도메인별 언어를 표현할 수 있는 도구 역할을 한다.  • 컴파일러가 암시적 매개변수를 확인할 수 없다면 이 문제를 해결할 수 있는 가져오기 제안이 제공된다.  스칼라 3의 유형 시스템 개선 사항은 다음과 같다.  • 열거형(Enums or enumerations...

2021.05.17

구글 ‘OSS-퍼즈’, 자바 앱까지 퍼징 확대 지원

구글의 오픈소스 퍼징 서비스 ‘OSS-퍼즈(OSS-Fuzz)’가 이제 자바(Java) 및 JVM(Java Virtual Machine) 기반 언어(예: 코틀린, 스칼라 등)로 작성된 애플리케이션을 지원한다.    ‘OSS-퍼즈’는 오픈소스 소프트웨어에 지속적인 퍼징(continuous fuzzing)을 제공한다. 퍼징은 컴퓨터 프로그램에 유효하지 않은 무작위 데이터 스트림을 입력해 소프트웨어 프로그래밍 오류 및 보안 취약점을 찾는 방법이다.  지난 3월 10일 발표된 보도 자료에 따르면 이제 JVM 언어와 같은 메모리 보안 언어로 작성된 코드를 퍼징해 프로그램이 충돌하거나 잘못 작동하는 버그를 찾을 수 있다.  구글은 코드 인텔리전스(Code Intelligence)의 퍼저인 재저(Jazzer)를 OSS-퍼즈와 통합해 자바와 JVM에 대한 퍼징을 활성화했다고 설명했다. 재저를 사용하면 C/C++로 작성된 코드에서 했던 것처럼 LLVM 프로젝트의 립퍼저(libFuzzer)를 통해 JVM 기반 언어로 작성된 코드를 퍼징할 수 있다.  재저는 자바(Java), 클로저(Clojure), 코틀린(Kotlin), 스칼라(Scala)를 지원한다. 코드 커버리지 피드백은 JVM 바이트코드에서 립퍼저로 제공되며, 재저는 다음과 같은 립퍼저 기능을 지원한다.  • ‘FuzzedDataProvider’: 바이트 배열을 허용하지 않는 퍼징 코드  • 8-bit 엣지 카운터를 기반으로 한 코드 커버리지 평가 • 충돌 입력 최소화 • 가치 프로필  구글은 JVM 언어로 작성된 오픈소스 프로젝트를 OSS-퍼즈에 추가하는 방법을 설명하는 문서를 제공했다. 구글은 궁극적으로 재저가 모든 립퍼저 기능을 지원할 계획이라고 전했다. 재저는 자바 네이티브 인터페이스(Java Native Interface; JNI)를 통해 실행되는 네이티브 코드에서 커버리지 피드백을 제공할 수도 있다. 이를 통해 메모리가 보안되지...

구글 오픈소스 퍼징 퍼즈 테스트 퍼저 OSS-퍼즈 자바 JVM 코틀린 스칼라 프로그래밍 오류 보안 취약점 코드 인텔리전스 재저 립퍼저 클로저

2021.03.15

구글의 오픈소스 퍼징 서비스 ‘OSS-퍼즈(OSS-Fuzz)’가 이제 자바(Java) 및 JVM(Java Virtual Machine) 기반 언어(예: 코틀린, 스칼라 등)로 작성된 애플리케이션을 지원한다.    ‘OSS-퍼즈’는 오픈소스 소프트웨어에 지속적인 퍼징(continuous fuzzing)을 제공한다. 퍼징은 컴퓨터 프로그램에 유효하지 않은 무작위 데이터 스트림을 입력해 소프트웨어 프로그래밍 오류 및 보안 취약점을 찾는 방법이다.  지난 3월 10일 발표된 보도 자료에 따르면 이제 JVM 언어와 같은 메모리 보안 언어로 작성된 코드를 퍼징해 프로그램이 충돌하거나 잘못 작동하는 버그를 찾을 수 있다.  구글은 코드 인텔리전스(Code Intelligence)의 퍼저인 재저(Jazzer)를 OSS-퍼즈와 통합해 자바와 JVM에 대한 퍼징을 활성화했다고 설명했다. 재저를 사용하면 C/C++로 작성된 코드에서 했던 것처럼 LLVM 프로젝트의 립퍼저(libFuzzer)를 통해 JVM 기반 언어로 작성된 코드를 퍼징할 수 있다.  재저는 자바(Java), 클로저(Clojure), 코틀린(Kotlin), 스칼라(Scala)를 지원한다. 코드 커버리지 피드백은 JVM 바이트코드에서 립퍼저로 제공되며, 재저는 다음과 같은 립퍼저 기능을 지원한다.  • ‘FuzzedDataProvider’: 바이트 배열을 허용하지 않는 퍼징 코드  • 8-bit 엣지 카운터를 기반으로 한 코드 커버리지 평가 • 충돌 입력 최소화 • 가치 프로필  구글은 JVM 언어로 작성된 오픈소스 프로젝트를 OSS-퍼즈에 추가하는 방법을 설명하는 문서를 제공했다. 구글은 궁극적으로 재저가 모든 립퍼저 기능을 지원할 계획이라고 전했다. 재저는 자바 네이티브 인터페이스(Java Native Interface; JNI)를 통해 실행되는 네이티브 코드에서 커버리지 피드백을 제공할 수도 있다. 이를 통해 메모리가 보안되지...

2021.03.15

스칼라 3, RC 버전 공개··· 유형 매개변수 및 구문 개선 

객체 지향 함수형 프로그래밍 언어 ‘스칼라(Scala)’ 버전 3가 정식판 직전의 ‘릴리즈 캔디데이트(RC)’ 단계로 이동했다.   스칼라 3가 정식 버전 출시를 앞두고 막바지 준비 작업에 한창이다. 개발팀에 따르면 스칼라 3의 RC 버전에서는 사용자 환경이 개선되고 메타프로그래밍 프레임워크가 강화됐다.    스칼라는 JVM과 자바스크립트 런타임에서 실행되며, 라이브러리 에코시스템에 액세스할 수 있는 고성능 시스템을 구축하는 데 사용될 수 있다. 지난 2월 17일 공개된 RC 버전의 개선사항은 다음과 같다.  • 확장의 유형 매개변수를 메소드 자체의 유형 매개변수와 결합할 수 있다.  • import 구문이 변경됐다. 와일드카드를 사용한 가져오기가 _ 에서 * 으로 바뀌고, 이름바꾸기 연산자가 =>에서 as로 대체됐다.  • 가변인자 스플라이스(Vararg Splices) 구문이 패턴과 함수 인수에서 변경됐다. 새 구문은 가변인자 매개변수가 선언되는 방식과 유사하게 : _* 대신 후위표기법(Postfix)으로 * 를 사용한다.  • 스칼라는 RC 1부터 케이스 클래스의 동반자 개체를 위한 부모 함수를 생성하지 않는다.   한편 RC 버전 이전에 스칼라 3에 적용됐던 개선사항은 아래와 같다.  • 컴파일러 최적화 • 네이티브가 아닌 JS 유형 및 JS 상호운용성을 포함해 스칼라.js 자바스크립트 구현 지원 • 패턴 바인딩에서 @ 대신 as가 허용된다. 스칼라 3.1부터 @ 구문은 더 이상 사용되지 않는다. • 코드 단순화를 위해 구문이 변경됐다. import p.{given _} 대신 p.given를 사용할 수 있다.  • 메타프로그래밍 API가 균일하게 개선됐다.  ciokr@idg.co.kr  

함수형 프로그래밍 언어 스칼라 JVM 자바스크립트

2021.02.23

객체 지향 함수형 프로그래밍 언어 ‘스칼라(Scala)’ 버전 3가 정식판 직전의 ‘릴리즈 캔디데이트(RC)’ 단계로 이동했다.   스칼라 3가 정식 버전 출시를 앞두고 막바지 준비 작업에 한창이다. 개발팀에 따르면 스칼라 3의 RC 버전에서는 사용자 환경이 개선되고 메타프로그래밍 프레임워크가 강화됐다.    스칼라는 JVM과 자바스크립트 런타임에서 실행되며, 라이브러리 에코시스템에 액세스할 수 있는 고성능 시스템을 구축하는 데 사용될 수 있다. 지난 2월 17일 공개된 RC 버전의 개선사항은 다음과 같다.  • 확장의 유형 매개변수를 메소드 자체의 유형 매개변수와 결합할 수 있다.  • import 구문이 변경됐다. 와일드카드를 사용한 가져오기가 _ 에서 * 으로 바뀌고, 이름바꾸기 연산자가 =>에서 as로 대체됐다.  • 가변인자 스플라이스(Vararg Splices) 구문이 패턴과 함수 인수에서 변경됐다. 새 구문은 가변인자 매개변수가 선언되는 방식과 유사하게 : _* 대신 후위표기법(Postfix)으로 * 를 사용한다.  • 스칼라는 RC 1부터 케이스 클래스의 동반자 개체를 위한 부모 함수를 생성하지 않는다.   한편 RC 버전 이전에 스칼라 3에 적용됐던 개선사항은 아래와 같다.  • 컴파일러 최적화 • 네이티브가 아닌 JS 유형 및 JS 상호운용성을 포함해 스칼라.js 자바스크립트 구현 지원 • 패턴 바인딩에서 @ 대신 as가 허용된다. 스칼라 3.1부터 @ 구문은 더 이상 사용되지 않는다. • 코드 단순화를 위해 구문이 변경됐다. import p.{given _} 대신 p.given를 사용할 수 있다.  • 메타프로그래밍 API가 균일하게 개선됐다.  ciokr@idg.co.kr  

2021.02.23

오라클, 자바 SE 서브스크립션에 ‘그랄VM(GraaIVM)’ 추가

오라클이 자바 SE 서브스크립션(Java SE Subscription)에 엔터프라이즈 다중 언어 런타임 ‘그랄VM(GraalVM)’을 추가 비용 없이 번들로 제공한다고 지난 3일(현지 시각) 발표했다. 자바 배포를 위한 성능 및 메모리 효율성 향상을 목적으로 한다.    그랄VM은 자바와 JVM으로 작성된 애플리케이션 실행 속도를 높여주며 자바스크립트, 파이썬, 루비 등 자바 외의 다른 언어에서 작동하는 런타임을 제공한다.  기존에는 '그랄VM 엔터프라이즈(GraalVM Enterprise)’를 사용할 때 프로세서당 월 18달러의 비용을 내야 했다. 그랄VM 엔터프라이즈는 현재 자바 8과 자바 11을 지원한다. 오라클은 그랄VM 엔터프라이즈에서 최신 자바 릴리즈를 지원할 계획이다. 그랄VM 엔터프라이즈가 제공하는 기능들은 다음과 같다.  • 고성능 최적화 컴파일러: 그랄VM 엔터프라이즈의 JIT(Just-In-Time) 컴파일러는 코드 변경 없이 자바 애플리케이션 성능을 향상시킬 수 있는 최적화 기능을 제공한다.  • AOT(Ahead-of-time) 네이티브 이미지 컴파일러: 네이티브 이미지는 더 빠른 실행과 더 낮은 메모리 및 CPU 요구사항을 제공하며, 인프라 및 클라우드 구축 비용을 절감하는 데 도움을 준다. AOT는 자바 성능을 C 언어와 고(GO) 언어 애플리케이션과 동등하게 제공해 자바를 마이크로서비스에 더 적합하게 만든다.   • 다중 언어 지원: 다른 프로그래밍 언어로 작성된 라이브러리 및 프레임워크를 사용하고, 이를 JVM에서 실행할 수 있다.  오라클의 자바 SE 서브스크립션은 데스크톱, 서버, 클라우드에서 사용할 수 있는 라이선스와 지원을 제공한다. 또한 성능, 보안, 안정성뿐만 아니라 엔터프라이즈 관리 및 배포 기능에 대한 업데이트를 지원한다. 자세한 정보는 이곳(oracle.com)에서 확인할 수 있다.  그랄VM 프로젝트는 자바를 위한 고성능 컴파일...

오라클 자바 자바 SE 서브스크립션 그랄VM 런타임 JVM 자바스크립트 파이썬 루비

2021.02.04

오라클이 자바 SE 서브스크립션(Java SE Subscription)에 엔터프라이즈 다중 언어 런타임 ‘그랄VM(GraalVM)’을 추가 비용 없이 번들로 제공한다고 지난 3일(현지 시각) 발표했다. 자바 배포를 위한 성능 및 메모리 효율성 향상을 목적으로 한다.    그랄VM은 자바와 JVM으로 작성된 애플리케이션 실행 속도를 높여주며 자바스크립트, 파이썬, 루비 등 자바 외의 다른 언어에서 작동하는 런타임을 제공한다.  기존에는 '그랄VM 엔터프라이즈(GraalVM Enterprise)’를 사용할 때 프로세서당 월 18달러의 비용을 내야 했다. 그랄VM 엔터프라이즈는 현재 자바 8과 자바 11을 지원한다. 오라클은 그랄VM 엔터프라이즈에서 최신 자바 릴리즈를 지원할 계획이다. 그랄VM 엔터프라이즈가 제공하는 기능들은 다음과 같다.  • 고성능 최적화 컴파일러: 그랄VM 엔터프라이즈의 JIT(Just-In-Time) 컴파일러는 코드 변경 없이 자바 애플리케이션 성능을 향상시킬 수 있는 최적화 기능을 제공한다.  • AOT(Ahead-of-time) 네이티브 이미지 컴파일러: 네이티브 이미지는 더 빠른 실행과 더 낮은 메모리 및 CPU 요구사항을 제공하며, 인프라 및 클라우드 구축 비용을 절감하는 데 도움을 준다. AOT는 자바 성능을 C 언어와 고(GO) 언어 애플리케이션과 동등하게 제공해 자바를 마이크로서비스에 더 적합하게 만든다.   • 다중 언어 지원: 다른 프로그래밍 언어로 작성된 라이브러리 및 프레임워크를 사용하고, 이를 JVM에서 실행할 수 있다.  오라클의 자바 SE 서브스크립션은 데스크톱, 서버, 클라우드에서 사용할 수 있는 라이선스와 지원을 제공한다. 또한 성능, 보안, 안정성뿐만 아니라 엔터프라이즈 관리 및 배포 기능에 대한 업데이트를 지원한다. 자세한 정보는 이곳(oracle.com)에서 확인할 수 있다.  그랄VM 프로젝트는 자바를 위한 고성능 컴파일...

2021.02.04

코틀린 1.4.20 버전 출시··· “JVM용 동적 메소드 호출 지원”

새롭게 출시된 ‘코틀린 1.4.20 버전’에서는 이제 JDK 9 또는 그 이상의 타깃에 동적 호출로 문자열 연결을 컴파일 할 수 있다.  23일(현지 시각) 젯브레인이 JVM, 안드로이드, 브라우저용 언어로 업그레이드된 ‘코틀린 1.4.20 버전’을 출시했다. 이번 릴리즈에서는 동적 메소드 호출을 통한 JVM 기반 문자열 연결을 비롯해 여러 개선사항과 실험적으로 도입한 기능 등이 공개됐다.    회사에 따르면 JDK 9이 나온 이후로 JVM에서의 문자열 연결은 동적 메소드 호출(바이트코드의 invokedynamiccode 명령어)을 통해 수행돼 왔다. 이는 이전 구현보다 더 빠르게 작동하고, 메모리를 덜 소비하며, 바이트코드 변경 없이 향후 최적화를 위한 공간을 남겨둔다.  코틀린에서도 성능 개선을 위해 이 메커니즘을 구현했다. 이제 JDK 9 이상의 타깃에서 문자열 연결을 동적호출로 컴파일할 수 있다. 단, 실험적으로 도입된 해당 기능은 Xstring-concat 옵션을 추가해 다음과 같은 사용 사례에서 호출할 수 있다. • 연산자(a + bcode), 명시적(a.plus(b)), 참조((a::plus)(b)) 형식의 String.plus • 인라인 및 데이터 클래스의 toString • 상수가 아닌 단일 인수가 있는 경우를 제외한 문자열 템플릿  또한 invokedynamic 문자열 연결을 사용하려면 아래의 규칙 가운데 하나를 호출해야 한다.  • StringConcatFactory.makeConcatWithConstants()를 사용하여 문자열에 invokedynamic 연결을 수행하는 indy-with-constants • StringConcatFactory.makeConcat()을 사용하여 문자열에 invokedynamic 연결을 수행하는 indy • StringBuilder.append()을 통해 클래식 연결로 다시 전환하는 inline 코틀린 1.4.20 버전의 명령줄 컴파일러는 ...

젯브레인 코틀린 JDK 9 자바 JVM 안드로이드 동적 메소드 호출 오브젝티브-C

2020.11.26

새롭게 출시된 ‘코틀린 1.4.20 버전’에서는 이제 JDK 9 또는 그 이상의 타깃에 동적 호출로 문자열 연결을 컴파일 할 수 있다.  23일(현지 시각) 젯브레인이 JVM, 안드로이드, 브라우저용 언어로 업그레이드된 ‘코틀린 1.4.20 버전’을 출시했다. 이번 릴리즈에서는 동적 메소드 호출을 통한 JVM 기반 문자열 연결을 비롯해 여러 개선사항과 실험적으로 도입한 기능 등이 공개됐다.    회사에 따르면 JDK 9이 나온 이후로 JVM에서의 문자열 연결은 동적 메소드 호출(바이트코드의 invokedynamiccode 명령어)을 통해 수행돼 왔다. 이는 이전 구현보다 더 빠르게 작동하고, 메모리를 덜 소비하며, 바이트코드 변경 없이 향후 최적화를 위한 공간을 남겨둔다.  코틀린에서도 성능 개선을 위해 이 메커니즘을 구현했다. 이제 JDK 9 이상의 타깃에서 문자열 연결을 동적호출로 컴파일할 수 있다. 단, 실험적으로 도입된 해당 기능은 Xstring-concat 옵션을 추가해 다음과 같은 사용 사례에서 호출할 수 있다. • 연산자(a + bcode), 명시적(a.plus(b)), 참조((a::plus)(b)) 형식의 String.plus • 인라인 및 데이터 클래스의 toString • 상수가 아닌 단일 인수가 있는 경우를 제외한 문자열 템플릿  또한 invokedynamic 문자열 연결을 사용하려면 아래의 규칙 가운데 하나를 호출해야 한다.  • StringConcatFactory.makeConcatWithConstants()를 사용하여 문자열에 invokedynamic 연결을 수행하는 indy-with-constants • StringConcatFactory.makeConcat()을 사용하여 문자열에 invokedynamic 연결을 수행하는 indy • StringBuilder.append()을 통해 클래식 연결로 다시 전환하는 inline 코틀린 1.4.20 버전의 명령줄 컴파일러는 ...

2020.11.26

"클로저 사용 개발자 69%, 기업 환경에서도 사용 중"

프로그래밍 언어 클로저(Clojure)의 기업 내 사용량이 증가하고 있다. 하지만 여전히 걸림돌도 많다. JVM·자바스크립트·마이크로소프트의 CLR(공통 언어 런타임) 상에서 실행되는 함수형 프로그래밍 언어 클로저의 기업 내 사용 빈도가 증가하고 있다는 조사 결과가 나왔다. 그러나 아직까지 클로저를 사용하도록 주변 사람을 설득하기 어렵고, 클로저의 오류 메시지를 이해하는 데도 어려움이 있는 것으로 드러났다.    클로저 사용자를 대상으로 진행된 클로저 2020 현황 조사(State of Clojure 2020) 보고서에 따르면, 설문조사 응답자의 약 69%가 기업 개발 환경에서 클로저를 사용하고 있는 것으로 나타났다. 이는 10년 전과 비교할 때 25% 증가한 수치다. 2월 20일에 공개된 이번 보고서는 직원 수가 최소 1,000명 이상인 대기업에서 클로저 채택이 증가했다고 밝혔다.   클로저의 주요 장점은 아래와 같다.  - 함수형 프로그래밍(Functional programming) - 컴파일 없이 즉석에서 코드를 입력하고, 출력 결과를 바로 확인할 수 있는 환경(REPL, Read·Eval·Print·Loop) - 불변 데이터(Immutable data)  - 개발 용이(Ease of development) - 호스트 상호운용성(Host interoperability)  또한 클로저가 웹 개발(79%)에서 가장 많이 사용되는 것으로 조사됐다. 이후로 오픈소스 프로젝트(45%), 커머셜 서비스(29%), 기업용 앱(29%) 순으로 나타났다. 특히 기업용 앱 부문이 10년 전(0%)과 비교할 때 크게 증가했다.  한편 응답자의 절반 이상이 맥OS(55%)를 기본 운영체제로 사용하고 있었다. 리눅스(35%), 윈도우(9%)가 그 뒤를 이었다.   기업 환경에서의 사용이 증가했지만, 여전히 난관도 존재했다. 응답자들은 동료, 회사, 고객을 설득하는 것, 어려운 오류 메...

윈도우 클로저스크립트 공통 언어 런타임 CLR JVM 클로저 리눅스 프로그래밍 언어 프로그래밍 자바스크립트 함수형 프로그래밍 언어

2020.02.27

프로그래밍 언어 클로저(Clojure)의 기업 내 사용량이 증가하고 있다. 하지만 여전히 걸림돌도 많다. JVM·자바스크립트·마이크로소프트의 CLR(공통 언어 런타임) 상에서 실행되는 함수형 프로그래밍 언어 클로저의 기업 내 사용 빈도가 증가하고 있다는 조사 결과가 나왔다. 그러나 아직까지 클로저를 사용하도록 주변 사람을 설득하기 어렵고, 클로저의 오류 메시지를 이해하는 데도 어려움이 있는 것으로 드러났다.    클로저 사용자를 대상으로 진행된 클로저 2020 현황 조사(State of Clojure 2020) 보고서에 따르면, 설문조사 응답자의 약 69%가 기업 개발 환경에서 클로저를 사용하고 있는 것으로 나타났다. 이는 10년 전과 비교할 때 25% 증가한 수치다. 2월 20일에 공개된 이번 보고서는 직원 수가 최소 1,000명 이상인 대기업에서 클로저 채택이 증가했다고 밝혔다.   클로저의 주요 장점은 아래와 같다.  - 함수형 프로그래밍(Functional programming) - 컴파일 없이 즉석에서 코드를 입력하고, 출력 결과를 바로 확인할 수 있는 환경(REPL, Read·Eval·Print·Loop) - 불변 데이터(Immutable data)  - 개발 용이(Ease of development) - 호스트 상호운용성(Host interoperability)  또한 클로저가 웹 개발(79%)에서 가장 많이 사용되는 것으로 조사됐다. 이후로 오픈소스 프로젝트(45%), 커머셜 서비스(29%), 기업용 앱(29%) 순으로 나타났다. 특히 기업용 앱 부문이 10년 전(0%)과 비교할 때 크게 증가했다.  한편 응답자의 절반 이상이 맥OS(55%)를 기본 운영체제로 사용하고 있었다. 리눅스(35%), 윈도우(9%)가 그 뒤를 이었다.   기업 환경에서의 사용이 증가했지만, 여전히 난관도 존재했다. 응답자들은 동료, 회사, 고객을 설득하는 것, 어려운 오류 메...

2020.02.27

지금도 앞으로도 개발의 핵심··· '자바 가상머신(JVM)'의 이해

자바 가상 머신(Java Virtual Machine, JVM)은 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. JVM은 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. 방어적 코딩(Coding Kung Fu)의 가장 훌륭한 예 가운데 하나이기도 한 간단한 아이디어이기도 하다. JVM은 당시에도 상황을 뒤집어 놓았고 지금까지도 프로그래밍 혁신을 지원하고 있다. JVM의 용도와 정의 JVM에는 2가지 기본 기능이 있다. 자바 프로그램이 어느 기기, 또는 어느 운영체제 상에서도 실행될 수 있게 하는 것("한 번 작성해, 어디에서나 실행한다"는 유명한 원칙이다)과 프로그램 메모리를 관리하고 최적화하는 것이다. 1995년 자바가 공개 되었을 때, 모든 컴퓨터 프로그램은 특정 운영체제에 맞게 작성되었으며, 프로그램 메모리는 소프트웨어 개발자가 관리했었다. 그래서 JVM은 놀라움이었다. 그림. JVM에 대한 상위 레벨 뷰 Credit: JavaWorld/ IDG JVM에 대한 기술적인 정의를 하는 것은 유용하며, 소프트웨어 개발자들의 일반적인 정의도 있다. JVM에 대한 정의는 다음과 같이 나눌 수 있다. - 기술적 정의: JVM은 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양(Specification)이다. - 일반적 정의: JVM은 자바 프로그램을 실행하는 방법이다. JVM의 설정을 구성한 다음 설정사항에 따라 실행 중에 프로그램 리소스를 관리한다. 개발자들이 JVM에 대해 말하고 있다면, 대개는 어떤 기기 상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭한다. 이 맥락에서의 JVM은 이런 작업들을 수행하는 프로그램 구축을 위한 요구조건들을 정의하는 JVM 사양과는 다른 것이다. 누가 JVM을 개발하며 유지보수하는가 JVM은 널리 배포되어 있고, 많이 사용되고 있으며...

Java JVM Java Virtual Machine

2018.09.21

자바 가상 머신(Java Virtual Machine, JVM)은 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. JVM은 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. 방어적 코딩(Coding Kung Fu)의 가장 훌륭한 예 가운데 하나이기도 한 간단한 아이디어이기도 하다. JVM은 당시에도 상황을 뒤집어 놓았고 지금까지도 프로그래밍 혁신을 지원하고 있다. JVM의 용도와 정의 JVM에는 2가지 기본 기능이 있다. 자바 프로그램이 어느 기기, 또는 어느 운영체제 상에서도 실행될 수 있게 하는 것("한 번 작성해, 어디에서나 실행한다"는 유명한 원칙이다)과 프로그램 메모리를 관리하고 최적화하는 것이다. 1995년 자바가 공개 되었을 때, 모든 컴퓨터 프로그램은 특정 운영체제에 맞게 작성되었으며, 프로그램 메모리는 소프트웨어 개발자가 관리했었다. 그래서 JVM은 놀라움이었다. 그림. JVM에 대한 상위 레벨 뷰 Credit: JavaWorld/ IDG JVM에 대한 기술적인 정의를 하는 것은 유용하며, 소프트웨어 개발자들의 일반적인 정의도 있다. JVM에 대한 정의는 다음과 같이 나눌 수 있다. - 기술적 정의: JVM은 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양(Specification)이다. - 일반적 정의: JVM은 자바 프로그램을 실행하는 방법이다. JVM의 설정을 구성한 다음 설정사항에 따라 실행 중에 프로그램 리소스를 관리한다. 개발자들이 JVM에 대해 말하고 있다면, 대개는 어떤 기기 상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭한다. 이 맥락에서의 JVM은 이런 작업들을 수행하는 프로그램 구축을 위한 요구조건들을 정의하는 JVM 사양과는 다른 것이다. 누가 JVM을 개발하며 유지보수하는가 JVM은 널리 배포되어 있고, 많이 사용되고 있으며...

2018.09.21

'떠오르는 자바 대체제'··· 코틀린 제대로 이해하기

코틀린(Kotlin)은 JVM 및 안드로이드 개발에서 자바에 비해 큰 이점을 제공하며, 같은 프로젝트에서 자바와 매끄럽게 연동된다. 사용하지 않을 이유가 없다. 코틀린은 JVM과 안드로이드를 위한 정적 형식 지정(statically typed) 범용 오픈소스 프로그래밍 언어로, 객체 지향과 함수형 프로그래밍의 특성을 혼합한 언어다. 상호운용성, 안전성, 명확성, 툴 지원에 중점을 두고 있다. 현재 자바스크립트용 코틀린 버전(ECMAScript 5.1)과 네이티브 코드(LLVM 사용)가 준비되고 있다. 코틀린은 인텔리J(IntelliJ) IDEA를 만든 젯브레인스(JetBrains)가 2010년 내놓았으며, 2012년부터 오픈소스화됐다. 현재 코틀린 팀은 20명 이상의 젯브레인스 출신 정규 멤버로 구성되며 깃허브의 코틀린 프로젝트에는 100여 명의 기여자가 있다. 젯브레인스는 대표 제품인 인텔리J IDEA를 포함한 많은 제품에서 코틀린을 사용한다. 코틀린의 첫인상은 군살을 뺀 자바다. 다음 스크린샷은 필자가 자바 코드 샘플(왼쪽)을 코틀린으로 자동으로 변환한 모습이다. 인스턴스화하는 자바 변수에서 보이는, 무의미한 반복이 사라진 것을 알 수 있다. 다음과 같은 자바 이디엄이 StringBuilder sb = new StringBuilder(); 코틀린에서는 이렇게 된다. val sb = StringBuilder() 함수가 fun 키워드로 정의되고, 새 줄에서 세미콜론이 선택 사항임을 볼 수 있다. val 키워드는 읽기 전용 또는 로컬 변수를 선언한다. var 키워드는 가변 속성 또는 로컬 변수를 선언한다. 그럼에도 불구하고 코틀린은 강력한 형식의 언어다. val 및 var 키워드는 형식 추론이 가능할 때만 사용할 수 있다. 그렇지 않은 경우 형식을 선언해야 한다. 형식 추론은 각 코틀린 릴리즈가 나올 때마다 개선되고 있는 것으로 보인다. 화면 양쪽에서 ...

자바 프로그래밍 JVM 코틀린

2017.11.06

코틀린(Kotlin)은 JVM 및 안드로이드 개발에서 자바에 비해 큰 이점을 제공하며, 같은 프로젝트에서 자바와 매끄럽게 연동된다. 사용하지 않을 이유가 없다. 코틀린은 JVM과 안드로이드를 위한 정적 형식 지정(statically typed) 범용 오픈소스 프로그래밍 언어로, 객체 지향과 함수형 프로그래밍의 특성을 혼합한 언어다. 상호운용성, 안전성, 명확성, 툴 지원에 중점을 두고 있다. 현재 자바스크립트용 코틀린 버전(ECMAScript 5.1)과 네이티브 코드(LLVM 사용)가 준비되고 있다. 코틀린은 인텔리J(IntelliJ) IDEA를 만든 젯브레인스(JetBrains)가 2010년 내놓았으며, 2012년부터 오픈소스화됐다. 현재 코틀린 팀은 20명 이상의 젯브레인스 출신 정규 멤버로 구성되며 깃허브의 코틀린 프로젝트에는 100여 명의 기여자가 있다. 젯브레인스는 대표 제품인 인텔리J IDEA를 포함한 많은 제품에서 코틀린을 사용한다. 코틀린의 첫인상은 군살을 뺀 자바다. 다음 스크린샷은 필자가 자바 코드 샘플(왼쪽)을 코틀린으로 자동으로 변환한 모습이다. 인스턴스화하는 자바 변수에서 보이는, 무의미한 반복이 사라진 것을 알 수 있다. 다음과 같은 자바 이디엄이 StringBuilder sb = new StringBuilder(); 코틀린에서는 이렇게 된다. val sb = StringBuilder() 함수가 fun 키워드로 정의되고, 새 줄에서 세미콜론이 선택 사항임을 볼 수 있다. val 키워드는 읽기 전용 또는 로컬 변수를 선언한다. var 키워드는 가변 속성 또는 로컬 변수를 선언한다. 그럼에도 불구하고 코틀린은 강력한 형식의 언어다. val 및 var 키워드는 형식 추론이 가능할 때만 사용할 수 있다. 그렇지 않은 경우 형식을 선언해야 한다. 형식 추론은 각 코틀린 릴리즈가 나올 때마다 개선되고 있는 것으로 보인다. 화면 양쪽에서 ...

2017.11.06

자바 20주년: JVM, 자바의 또 다른 자산

자바가 이번 주 20주년을 맞았다. 물론 가장 먼저 떠오르는 것은 자바 언어 자체겠지만 사실 자바 언어의 기저에는 자바 자체 못지않게 중요하고 강력한 기술적 자산, 바로 자바 가상 머신(JVM)이 있다. JVM은 특정 언어를 실행하도록 만들어지지 않았고(자바는 여러 가능성 중의 하나일 뿐임) 그 특성에 힘입어 일종의 플랫폼으로 자리매김했다. JVM을 위해 개발된 언어들은 자바와는 거의 아무런 연관성이 없다. JVM의 향후 개발 방향도 자바의 풍족한 라이브러리와 소프트웨어 자산을 활용할 수 있는 새로운 요소, 또는 자바와는 완전히 별개의 요소를 지향하고 있다. JVM의 기반 엔진 JVM이라고 하면 보통 특정 JVM, 즉 썬마이크로시스템즈가 처음에 만들었고 현재 오라클이 소유한 JVM을 지칭한다. 이 JVM은 JIT 컴파일과 성능 가속을 위해 핫스팟 엔진을 사용한다. 핫스팟에서 작동하는 코드는 가끔 C/C++로 작성된 코드의 성능과 대등하거나 심지어 앞서기도 한다. 핫스팟 JVM이 유일한 자바 구현은 아니지만 탁월한 성능과 오랜 시간에 걸친 개발을 통해 사실상의 유일한 선택안이 됐다. 수없이 많은 다른 JVM이 나타났다 사라지는 동안 핫스팟(현재는 오픈 소스)은 엔터프라이즈 프로덕션에서 여전히 가장 보편적인 옵션으로 남아 있다. 물론 독자적인 JVM을 추구하는 경우도 종종 있다. 예를 들어 어떤 개발자는 온전히 구글 고(Go) 언어로 JVM을 개발 중이다. 다만 지금은 핫스팟의 경쟁 상대라고 하기는 어렵고 그저 실험 수준일 뿐이다. 그동안 핫스팟에 구현된 다양한 최적화 작업 덕분에 JVM은 그 자체가 다른 언어의 목표 플랫폼이 됐다. JVM의 빠른 속도와 크로스 플랫폼 구현을 활용하기 위해 완전히 새롭게 만들어지는 언어도 있고, 기존 언어가 이식되는 경우도 있다. 또한 JVM을 사용한다는 것은 언어를 위한 런타임을 처음부터 새로 만드는 수고를 덜 수 있음을 의미한다. JVM의 대스타: 클로저(Clojure), 스칼라(Scala),...

자바 개발자 JVM

2015.05.22

자바가 이번 주 20주년을 맞았다. 물론 가장 먼저 떠오르는 것은 자바 언어 자체겠지만 사실 자바 언어의 기저에는 자바 자체 못지않게 중요하고 강력한 기술적 자산, 바로 자바 가상 머신(JVM)이 있다. JVM은 특정 언어를 실행하도록 만들어지지 않았고(자바는 여러 가능성 중의 하나일 뿐임) 그 특성에 힘입어 일종의 플랫폼으로 자리매김했다. JVM을 위해 개발된 언어들은 자바와는 거의 아무런 연관성이 없다. JVM의 향후 개발 방향도 자바의 풍족한 라이브러리와 소프트웨어 자산을 활용할 수 있는 새로운 요소, 또는 자바와는 완전히 별개의 요소를 지향하고 있다. JVM의 기반 엔진 JVM이라고 하면 보통 특정 JVM, 즉 썬마이크로시스템즈가 처음에 만들었고 현재 오라클이 소유한 JVM을 지칭한다. 이 JVM은 JIT 컴파일과 성능 가속을 위해 핫스팟 엔진을 사용한다. 핫스팟에서 작동하는 코드는 가끔 C/C++로 작성된 코드의 성능과 대등하거나 심지어 앞서기도 한다. 핫스팟 JVM이 유일한 자바 구현은 아니지만 탁월한 성능과 오랜 시간에 걸친 개발을 통해 사실상의 유일한 선택안이 됐다. 수없이 많은 다른 JVM이 나타났다 사라지는 동안 핫스팟(현재는 오픈 소스)은 엔터프라이즈 프로덕션에서 여전히 가장 보편적인 옵션으로 남아 있다. 물론 독자적인 JVM을 추구하는 경우도 종종 있다. 예를 들어 어떤 개발자는 온전히 구글 고(Go) 언어로 JVM을 개발 중이다. 다만 지금은 핫스팟의 경쟁 상대라고 하기는 어렵고 그저 실험 수준일 뿐이다. 그동안 핫스팟에 구현된 다양한 최적화 작업 덕분에 JVM은 그 자체가 다른 언어의 목표 플랫폼이 됐다. JVM의 빠른 속도와 크로스 플랫폼 구현을 활용하기 위해 완전히 새롭게 만들어지는 언어도 있고, 기존 언어가 이식되는 경우도 있다. 또한 JVM을 사용한다는 것은 언어를 위한 런타임을 처음부터 새로 만드는 수고를 덜 수 있음을 의미한다. JVM의 대스타: 클로저(Clojure), 스칼라(Scala),...

2015.05.22

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.

10.5.0.9