GraalVM에서 바이너리로 JAR 변환
코틀리나우타스
Esse conteúdo é oferecido e distribuído pela comunidade, uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.
이진법이 무엇입니까?
Binário é um executável do sistema. um binário pode ser executado diretamente pelo sistema, pois é composto totalmente por linguagem de máquina.
As vantages de um binário é a velocidade de execução, que é geralmente BEM rápida, além de não precisarmos de uma linguagem instalada para rodar esse programa, pois o próprio sistema irá cuidar de rodar esse executável.
GraalVM
GraalVM é umaquina virtual da Oracle para aumentar a velocidade de aplicações. GraalVM의 기능은 네이티브 이미지에서 JVM(Java, Kotlin, Clojure 등)의 품질 관리 언어를 사용하여 전체 컴퓨터에 적용할 수 있습니다. 프로젝트에서 JVM을 사용하기 위한 필요성을 제거합니다.
에세 프로세서는 JVM을 바이너리 코드로 변환하고 제품을 사용하기 위해 페이토를 개발합니다. Pois esse processo é demoradado e gasta muito processamento e memória, 로고, em ambiente de desenvolvimento é mais fácil utilizar o processo normal da JVM para rodar seu código.
GraalVM 설치
Há alguns documentos oficiais de instalação da GraalVM para algumas plataformas, sendo:
Native Image 설치
A Native Image는 GraalVM을 설치하기 위해 GraalVM Updater을 설치해야 합니다. Essa instalação pode ser feita com o comando:
gu install native-image
헬로 월드
Hello World는 Kotlin에서 JAR로 시작하여 Hello World는 네이티브 이미지로 변환할 수 있습니다.
qualquer 편집기에서 Isso pode ser feito, IntelliJ의 활용이 필요하지 않은 경우 IntelliJ를 사용하는 것이 좋습니다.
아르퀴보
main.kt
:fun main(){
println("Olá Mundo!")
}
Agora precisamos tranformar esse arquivo em um JAR. 지금까지 Kotlin을 사용하지 않고 컴퓨터를 사용할 수 있게 되었습니다
kotlinc
. Vá até o caminho que esse arquivo está, e vamos fazer essa compilação com o comando abaixo:kotlinc main.kt -include-runtime -d main.jar
Agora temos o nosso JAR no arquivo
main.jar
. 집행관 esse JAR의 경우, isso pode ser feito com o comandojava -jar main.kt
, que teráOlá Mundo!
결과:Olá Mundo!
Agora precisamos transformar esse JAR em binário, podemos fazer isso com o comando
native-image
. 데사 마네이라:native-image --static -jar main.jar
Com isso o processamento irá começar. GraalVM ao longo do processamento irá mostrar alguns dados sobre o processo:
$ native-image --static -jar main.jar
Build on Server(pid: 5484, port: 35163)
[main:5484] classlist: 441.34 ms
[main:5484] (cap): 1,017.18 ms
[main:5484] setup: 1,581.26 ms
[main:5484] (typeflow): 2,216.25 ms
[main:5484] (objects): 516.04 ms
[main:5484] (features): 86.21 ms
[main:5484] analysis: 2,876.19 ms
[main:5484] universe: 131.56 ms
[main:5484] (parse): 610.96 ms
[main:5484] (inline): 518.10 ms
[main:5484] (compile): 2,818.48 ms
[main:5484] compile: 4,187.55 ms
[main:5484] image: 354.83 ms
[main:5484] write: 164.75 ms
[main:5484] [total]: 9,769.44 ms
Após o término desse processamento teremos um binário
main
com todo o código atual. Esse binário terá cerca de 12MB de tamanho.Para executar esse binário, no Windows podemos usar o comando
main
no diretório que esse binário está, e em Linux/MacOS podemos usar ./main
.Velocidade
Podemos comparar o tempo de execução do JAR e do binário, caso você esteja em sistemas Linux/MacOS existe o comando
time
para medir o tempo de execução de um comando, comparando os dois métodos teremos o resultado abaixo:$ time java -jar main.jar
Olá Mundo!
java -jar main.jar 0,12s user 0,02s system 64% cpu 0,114 total
$ time ./main
Olá Mundo!
./main 0,00s user 0,00s system 74% cpu 0,002 total
Podemos ver que a principal diferença entre os dois é a diferença de tempo que cada um executou. Enquanto
java -jar main.jar
demorou 0.12 segundos para rodar, ./main
levou 0 segundos para rodar, de maneira quase instantânea. Claro, para programas pequenos a diferença pequena, mas para programas maiores como uma aplicação web essa diferença irá ficar bem maior.마무리
JVM 특히 Kotlin의 바이너리 프로젝트에 대한 활용 사례GraalVM가 가장 많이 사용되며 실행 프로그램은 최종 바이너리입니다.
Obrigada por ler 💙
Reference
이 문제에 관하여(GraalVM에서 바이너리로 JAR 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kotlinautas/tranformando-jars-em-binario-com-graalvm-4m8o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)