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:
  • Windows
  • Linux
  • MacOS

  • 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 arquivomain.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 comandonative-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 💙

    좋은 웹페이지 즐겨찾기