OpenJDK-24.0.2
      
      
        
          Introdução ao OpenJDK
        
        
          "OpenJDK" é uma implementação de
          código aberto da plataforma "Java Standard Edition" da "Oracle".
          "OpenJDK" é útil para desenvolver
          aplicativos "Java" e fornece um
          ambiente de tempo de execução completo para executar aplicativos
          "Java".
        
        
          Esse pacote é conhecido por construir e funcionar corretamente
          usando uma plataforma LFS 12.4.
        
        
          "OpenJDK" é código "GPL", com uma exceção especial feita para
          projetos não-livres para usar essas classes nos produtos
          proprietários deles. De forma semelhante à "LGPL", que permite que
          aplicativos não-livres se vinculem a bibliotecas fornecidas por
          logiciário livre, a Licença Pública Geral
          GNU, versão 2, com a exceção Classpath permite que aplicativos
          de terceiros usem classes fornecidas por logiciário livre sem a
          exigência de que o logiciário de terceiros também seja livre. Tal
          como acontece com a "LGPL", quaisquer modificações feitas nas
          partes de logiciário livre de um aplicativo de terceiros também
          precisam ser disponibilizadas livremente.
        
        
          
          
            Nota
          
          
            O fonte do "OpenJDK" inclui uma
            suíte de teste de código aberto muito completa usando o
            equipamento de teste "JTreg". As
            instruções de teste abaixo permitem testar o "JDK"
            recém-construído para compatibilidade razoável com o "JDK"
            proprietário da "Oracle". No entanto, para a finalidade de que
            uma implementação independente alegue compatibilidade, ela
            precisa passar por uma suíte proprietária de teste "JCK/TCK". Nenhuma alegação de
            compatibilidade, ou mesmo compatibilidade parcial, pode ser feita
            sem passar por uma suíte de teste aprovada.
          
          
            A Oracle fornece acesso gratuito à comunidade, caso a caso, a um
            kit de ferramentas fechado para garantir 100% de compatibilidade
            com o JDK proprietário dela. Nem a versão binária fornecida na
            página Java-24.0.2 nem a JVM construída com as
            instruções abaixo foram testadas contra o 
            TCK. Qualquer versão que seja construída usando as instruções
            fornecidas não pode alegar ser compatível com o JDK proprietário,
            sem que o(a) próprio(a) usuário(a) solicite e complete os testes
            de compatibilidade.
          
          
            Com isso em mente, os binários produzidos usando este método de
            construção são testados regularmente em relação ao TCK pelos
            membros listados no sítio acima. Além da licença comunitária
            acima, uma licença educacional e não comercial para o TCK pode
            ser obtida aqui.
          
         
        
          Informação do Pacote
        
        
          
            - 
              
                Transferência (HTTP): 
                https://github.com/openjdk/jdk24u/archive/jdk-24.0.2-ga.tar.gz
              
             
            - 
              
                Soma de verificação MD5 da transferência:
                160e4f0de98c13fddba4f1dc0bad3615
              
             
            - 
              
                Tamanho da Transferência: 115 MB
              
             
            - 
              
                Espaço em disco estimado exigido: 3,8 GB (adicionar 630 MB
                para os testes)
              
             
            - 
              
                Tempo de construção estimado: 4,3 UPC com 4 tarefas
                (adicionar 35 UPC para testes com 4 tarefas)
              
             
          
         
        
          Transferências Adicionais
        
        
          Equipamento opcional de
          teste
        
        
        
          Dependências do OpenJDK
        
        
          Dependências Exigidas
        
        
          Um binário existente (Java-24.0.2 ou uma versão construída anterior
          desse pacote. As instruções abaixo assumem que você está usando
          Configurando o ambiente Java),
          alsa-lib-1.2.14, cpio-2.15, Cups-2.4.12, libarchive-3.8.1, Which-2.23,
          Bibliotecas do Xorg e Zip-3.0
        
        
          Recomendadas
        
        
          make-ca-1.16.1, giflib-5.2.2, harfBuzz-11.4.1, Little CMS-2.17, libjpeg-turbo-3.0.1, libpng-1.6.50 e
          Wget-1.25.0
        
        
          Opcionais
        
        
          git-2.50.1,
          Graphviz-13.1.2, mercurial-7.1, ccache, pandoc e pigz
        
       
      
        
          Instalação do OpenJDK
        
        
          Se você baixou o equipamento opcional de teste, desempacote-o
          agora:
        
        tar -xf ../jtreg-7.5.1+1.tar.gz
        
          Corrija uma falha de construção causada pela glibc-2.42:
        
        find src -name *.*pp -exec sed -i 's/uabs(/g_uabs(/' {} \;
        
          
          
            Nota
          
          
            Antes de continuar, você deveria garantir que sua variável de
            ambiente PATH contenha o local do
            compilador Java usado para inicializar o OpenJDK. Essa é a única exigência para o
            ambiente. Instalações modernas Java não precisam de JAVA_HOME; e CLASSPATH
            não é usado aqui. Além disso, os(as) desenvolvedores(as) do
            OpenJDK recomendam desconfigurar JAVA_HOME e CLASSPATH.
          
          
            O sistema de construção não permite a chave "-j" em "MAKEFLAGS".
            Veja-se a explicação do comando para "--with-jobs=" para mais informações relativas a
            personalizar a paralelização.
          
         
        
          Configure e construa o pacote com os seguintes comandos:
        
        export MAKEFLAGS_HOLD=$MAKEFLAGS           &&
unset  JAVA_HOME                           &&
unset  CLASSPATH                           &&
unset  MAKEFLAGS                           &&
bash configure --enable-unlimited-crypto    \
               --disable-warnings-as-errors \
               --with-stdc++lib=dynamic     \
               --with-giflib=system         \
               --with-harfbuzz=system       \
               --with-jtreg=$PWD/jtreg      \
               --with-lcms=system           \
               --with-libjpeg=system        \
               --with-libpng=system         \
               --with-zlib=system           \
               --with-version-build="12"     \
               --with-version-pre=""        \
               --with-version-opt=""        \
               --with-jobs=$(nproc)         \
               --with-cacerts-file=/etc/pki/tls/java/cacerts &&
make images
        
          Para testar os resultados, você precisará executar o aplicativo
          "jtreg". Você consegue configurar o número de testes simultâneos
          adicionando o valor "-conc:<X>" no comando
          abaixo (caso contrário, os testes executarão sequencialmente):
        
        export JT_JAVA=$(echo $PWD/build/*/jdk) &&
jtreg/bin/jtreg -jdk:$JT_JAVA -automatic -ignore:quiet -v1 \
   test/jdk:tier1 test/langtools:tier1 &&
unset JT_JAVA
        
          Para mais controle sobre a suíte de teste, revise a documentação
          disponível em jtreg/doc/jtreg/usage.txt. Para revisar os
          resultados, vejam-se os arquivos JTreport/test_{jdk,langtools}/text/stats.txt e
          JTreport/test_{jdk,langtools}/text/summary.txt.
          Você deveria esperar ver cerca de oitenta (80) falhas e dez (10)
          erros.
        
        
          Instale o pacote com os seguintes comandos como o(a) usuário(a)
          "root":
        
        install -vdm755 /opt/jdk-24.0.2+12             &&
cp -Rv build/*/images/jdk/* /opt/jdk-24.0.2+12 &&
chown -R root:root /opt/jdk-24.0.2+12          &&
for s in 16 24 32 48; do
  install -vDm644 src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
                 /usr/share/icons/hicolor/${s}x${s}/apps/java.png
done
        
          
          
            Nota
          
          
            Se desejar instalar somente o "Java Runtime Environment", [então]
            você pode substituir "build/*/images/jre" no comando "cp" acima.
          
         
        
          Existirão muitos binários com informações de depuração que ocuparão
          mais da metade do tamanho instalado. Se não se importar com
          depuração, você pode remover as informações:
        
        find /opt/jdk-24.0.2+12 -name *.debuginfo -delete
        
          Restaure a variável MAKEFLAGS:
        
        export MAKEFLAGS=$MAKEFLAGS_HOLD &&
unset  MAKEFLAGS_HOLD
        
          Agora existem dois "SDKs" "OpenJDK" instalados em "/opt". Você deveria decidir qual deles gostaria
          de usar como padrão. Normalmente, você optaria pelo recém-instalado
          "OpenJDK". Nesse caso, faça o
          seguinte como o(a) usuário(a) "root":
        
        ln -v -nsf jdk-24.0.2+12 /opt/jdk
        
          Se desejado, você pode criar arquivos ".desktop" para adicionar
          entradas no menu para "java" e "jconsole". Os ícones necessários
          já foram instalados. Como o(a) usuário(a) "root":
        
        mkdir -pv /usr/share/applications &&
cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 24.0.2 Tempo de Execução
Comment=OpenJDK Java 24.0.2 Tempo de Execução
Exec=/opt/jdk/bin/java -jar
Terminal=false
Type=Application
Icon=java
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
NoDisplay=true
EOF
cat > /usr/share/applications/openjdk-jconsole.desktop << "EOF"
[Desktop Entry]
Name=OpenJDK Java 24.0.2 Console
Comment=OpenJDK Java 24.0.2 Console
Keywords=java;console;monitoramento
Exec=/opt/jdk/bin/jconsole
Terminal=false
Type=Application
Icon=java
Categories=Application;System;
EOF
       
      
        
          Explicações do Comando
        
        
          bash configure...: o
          "configure" do nível superior é um
          envólucro em torno daquele do "autotools". Ele não é executável e
          precisa ser executado por intermédio do "bash".
        
        
          --enable-unlimited-crypto:
          Devido às limitações no uso de criptografia em alguns países,
          existe a possibilidade de limitar o tamanho das chaves de
          encriptação e o uso de alguns algoritmos em um arquivo de política.
          Essa chave permite enviar um arquivo de política sem restrições. É
          responsabilidade do(a) usuário(a) garantir a adequada aderência à
          legislação.
        
        
          --disable-warnings-as-errors: Essa
          chave desabilita o uso de "-Werror" na
          construção.
        
        
          --with-stdc++lib=dynamic:
          Essa chave força o sistema de construção a vincular-se a
          "libstdc++.so" (dinâmica) em vez de
          "libstdc++.a" (estática).
        
        
          --with-jobs=$(nproc): O -j passado para make não funciona com
          make como invocado aqui. Por padrão, o sistema de construção usará
          o número de CPUs – 1.
        
        
          --with-jtreg=$PWD/jtreg:
          Essa chave informa ao "configure" onde encontrar o "jtreg". Omita
          se você não baixou a suíte opcional de teste.
        
        
          --with-{giflib,harfbuzz,lcms,libjpeg,libpng,zlib}=system:
          Essas chaves forçam o sistema de construção a usar as bibliotecas
          do sistema em vez das versões incluídas.
        
        
          --with-version-build:
          Atualmente, o sistema de construção não inclui o número da
          construção na sequência de caracteres da versão. Ele tem que ser
          especificado aqui.
        
        
          --with-version-pre: Essa
          chave te permite prefixar a sequência de caracteres da versão com
          uma sequência personalizada de caracteres.
        
        
          --with-version-opt: Essa
          chave te permite adicionar uma descrição opcional da construção à
          sequência de caracteres de versão.
        
        
          --with-cacerts-file=/etc/pki/tls/java/cacerts:
          Especifica onde encontrar um arquivo "cacerts", "/etc/pki/tls/java/" em um sistema BLFS. Caso
          contrário, um vazio será criado. Você consegue usar o comando
          "/usr/sbin/make-ca
          --force" para gerá-lo, depois que tenha instalado
          os binários "Java".
        
        
          --with-boot-jdk: Essa chave fornece o
          local do "JDK" temporário. Ele
          normalmente não é necessário se "java" for encontrado no
          "PATH".
        
       
      
        
          Configurando o
          OpenJDK
        
        
          
            Informação de Configuração
          
          
            Normalmente, o ambiente Java é configurado depois de instalar-se
            a versão binária e também pode ser usado com o pacote
            recém-construído. Revise Configurando o ambiente
            Java caso você queira modificar alguma coisa.
          
          
            Para testar se as páginas de manual estão instaladas
            corretamente, emita "source
            /etc/profile" e "man java" para exibir a
            respectiva página de manual.
          
         
        
          
            Configurando o arquivo de Certificados de Autoridade
            Certificadora do JRE (cacerts)
          
          
            Se você executou as instruções na página "make-ca-1.16.1", [então] você só precisa
            criar um link simbólico no local padrão para o arquivo
            "cacerts". Como usuário(a)
            "root":
          
          ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts
          
            Para verificar a instalação, emita:
          
          cd /opt/jdk
bin/keytool -list -cacerts
          
            No "prompt" "Enter keystore
            password:", digite "changeit" (o padrão) ou
            simplesmente pressione a tecla “Enter”. Se o arquivo "cacerts" foi instalado corretamente, [então]
            você verá uma lista dos certificados com informações relacionadas
            a cada um. Caso contrário, você precisa reinstalá-los.
          
         
       
      
        
          Conteúdo
        
        
          
            
              Aplicativos Instalados:
              jar, jarsigner, java, javac, javadoc,
              javap, jcmd, jconsole, jdb, jdeprscan, jdeps, jfr, jhsdb,
              jimage, jinfo, jlink, jmap, jmod, jnativescan, jpackage, jps,
              jrunscript, jshell, jstack, jstat, jstatd, jwebserver, keytool,
              rmiregistry e serialver
            
            
              Bibliotecas Instaladas:
              37 bibliotecas em
              /opt/jdk-24.0.2+12/lib/
            
            
              Diretório Instalado:
              /opt/jdk-24.0.2+12
            
           
         
        
          
            Descrições Curtas
          
          
            
              
              
            
            
              
                | 
                   
                    jar
                   
                 | 
                
                   
                    combina múltiplos arquivos em um arquivamento "jar"
                   
                 | 
              
              
                | 
                   
                    jarsigner
                   
                 | 
                
                   
                    assina arquivos "jar" e verifica as assinaturas e a
                    integridade de um arquivo "jar" assinado
                   
                 | 
              
              
                | 
                   
                    java
                   
                 | 
                
                   
                    inicia um aplicativo "Java" iniciando um ambiente em
                    tempo de execução "Java", carregando uma classe
                    especificada e invocando o método principal dela
                   
                 | 
              
              
                | 
                   
                    javac
                   
                 | 
                
                   
                    lê definições de classe e interface, escritas na
                    linguagem de programação "Java", e as compila em arquivos
                    de classe de código de bytes
                   
                 | 
              
              
                | 
                   
                    javadoc
                   
                 | 
                
                   
                    analisa as declarações e comentários da documentação em
                    um conjunto de arquivos fonte "Java" e produz um conjunto
                    correspondente de páginas "HTML" descrevendo as classes,
                    interfaces, construtores, métodos e campos
                   
                 | 
              
              
                | 
                   
                    javap
                   
                 | 
                
                   
                    desmonta um arquivo de classe "Java"
                   
                 | 
              
              
                | 
                   
                    jcmd
                   
                 | 
                
                   
                    é um utilitário para enviar solicitações de comando de
                    diagnóstico para uma "Java Virtual Machine" em execução
                   
                 | 
              
              
                | 
                   
                    jconsole
                   
                 | 
                
                   
                    é uma ferramenta gráfica de console para monitorar e
                    gerenciar aplicativos "Java" e máquinas virtuais locais e
                    remotas
                   
                 | 
              
              
                | 
                   
                    jdb
                   
                 | 
                
                   
                    é um depurador simples de linha de comando para classes
                    "Java"
                   
                 | 
              
              
                | 
                   
                    jdeprscan
                   
                 | 
                
                   
                    escaneia arquivos de classe ou "jar" em busca de usos de
                    elementos obsoletos de "API"
                   
                 | 
              
              
                | 
                   
                    jdeps
                   
                 | 
                
                   
                    mostra as dependências de nível de pacote ou de nível de
                    classe de arquivos de classe "Java"
                   
                 | 
              
              
                | 
                   
                    jfr
                   
                 | 
                
                   
                    é uma ferramenta para trabalhar com arquivos “Flight
                    Recorder”
                   
                 | 
              
              
                | 
                   
                    jhsdb
                   
                 | 
                
                   
                    é uma ferramenta para analisar o conteúdo de um despejo
                    central originário de uma "Java Virtual Machine" ("JVM")
                    quebrada
                   
                 | 
              
              
                | 
                   
                    jimage
                   
                 | 
                
                   
                    é usado para listar, extrair, verificar ou obter
                    informações relativas a módulos no formato "jimage"
                   
                 | 
              
              
                | 
                   
                    jinfo
                   
                 | 
                
                   
                    imprime informações de configuração "Java" para um
                    determinado processo "Java", arquivo central ou servidor
                    remoto de depuração
                   
                 | 
              
              
                | 
                   
                    jlink
                   
                 | 
                
                   
                    é usado para montar e otimizar um conjunto de módulos e
                    as dependências deles em uma imagem personalizada em
                    tempo de execução
                   
                 | 
              
              
                | 
                   
                    jmap
                   
                 | 
                
                   
                    imprime mapas de memória de objetos compartilhados ou
                    detalhes de memória "heap" de um determinado processo,
                    arquivo central ou um servidor remoto de depuração
                   
                 | 
              
              
                | 
                   
                    jmod
                   
                 | 
                
                   
                    cria arquivos "JMOD" e lista o conteúdo dos arquivos
                    existentes "JMOD"
                   
                 | 
              
              
                | 
                   
                    jnativescan
                   
                 | 
                
                   
                    encontra métodos que acessam funcionalidades nativas
                    quando executados. Isso incluirá chamadas restritas de
                    métodos e declarações 'nativas' de métodos
                   
                 | 
              
              
                | 
                   
                    jpackage
                   
                 | 
                
                   
                    gera pacotes e imagens de aplicativos "Java"
                   
                 | 
              
              
                | 
                   
                    jps
                   
                 | 
                
                   
                    lista as "JVMs" instrumentadas no sistema alvo
                   
                 | 
              
              
                | 
                   
                    jrunscript
                   
                 | 
                
                   
                    é um "shell" de "script" de linha de comando
                   
                 | 
              
              
                | 
                   
                    jshell
                   
                 | 
                
                   
                    é uma ferramenta interativa para aprender a linguagem de
                    programação "Java" e "prototipar" código "Java"
                   
                 | 
              
              
                | 
                   
                    jstack
                   
                 | 
                
                   
                    imprime rastreamentos de pilha "Java" de camadas "Java"
                    para um determinado processo "Java", arquivo central ou
                    um servidor remoto de depuração
                   
                 | 
              
              
                | 
                   
                    jstat
                   
                 | 
                
                   
                    exibe estatísticas de desempenho para uma "JVM"
                    instrumentada
                   
                 | 
              
              
                | 
                   
                    jstatd
                   
                 | 
                
                   
                    é um aplicativo de servidor "RMI" que monitora a criação
                    e o encerramento de "JVMs" instrumentadas
                   
                 | 
              
              
                | 
                   
                    jwebserver
                   
                 | 
                
                   
                    fornece um servidor mínimo "HTTP", projetado para ser
                    usado para prototipagem, testagem e depuração
                   
                 | 
              
              
                | 
                   
                    keytool
                   
                 | 
                
                   
                    é um utilitário de gerenciamento de chaves e certificados
                   
                 | 
              
              
                | 
                   
                    rmiregistry
                   
                 | 
                
                   
                    cria e inicia um registro de objeto remoto na porta
                    especificada no dispositivo atual
                   
                 | 
              
              
                | 
                   
                    serialver
                   
                 | 
                
                   
                    retorna o "serialVersionUID" para uma ou mais classes em
                    um formato adequado para cópia em uma classe em evolução
                   
                 |