Biblioteca de classes Java - Java Class Library
A Java Class Library ( JCL ) é um conjunto de bibliotecas carregáveis dinamicamente que as linguagens Java Virtual Machine (JVM) podem chamar em tempo de execução . Como a plataforma Java não depende de um sistema operacional específico , os aplicativos não podem contar com nenhuma das bibliotecas nativas da plataforma. Em vez disso, a plataforma Java fornece um conjunto abrangente de bibliotecas de classes padrão , contendo as funções comuns aos sistemas operacionais modernos.
JCL atende a três propósitos dentro da JVM:
- Como outras bibliotecas de código padrão , eles fornecem ao programador um conjunto bem conhecido de recursos úteis, como classes de contêiner e processamento de expressão regular .
- A biblioteca fornece uma interface abstrata para tarefas que normalmente dependem muito do hardware e do sistema operacional, como acesso à rede e acesso a arquivos .
- Algumas plataformas subjacentes podem não suportar todos os recursos que um aplicativo Java espera. Nesses casos, a implementação da biblioteca pode emular esses recursos ou fornecer uma maneira consistente de verificar a presença de um recurso específico.
Implementação e configuração
A Java Class Library ( JCL ) é quase totalmente escrita em Java, exceto para as partes que precisam de acesso direto ao hardware e sistema operacional (como para E / S ou gráficos de bitmap ). As classes que fornecem acesso a essas funções geralmente usam wrappers Java Native Interface para acessar APIs do sistema operacional .
Quase todo o JCL é armazenado em um único arquivo Java chamado "rt.jar", que é fornecido com as distribuições JRE e JDK . A Java Class Library (rt.jar) está localizada no classpath de bootstrap padrão e não precisa aparecer no classpath declarado para o aplicativo. O tempo de execução usa o carregador de classe de bootstrap para localizar o JCL.
O Java Module System (parte da versão Java 9 ) quebrou o arquivo JAR "rt.jar" monolítico e modularizou o próprio JCL em vários módulos com dependências especificadas.
Conformidade
Qualquer implementação Java deve passar nos testes do Java Technology Compatibility Kit para conformidade, o que inclui testes JCL.
Principais características
Os recursos JCL são acessados por meio de classes fornecidas em pacotes .
-
java.lang
contém classes e interfaces fundamentais intimamente ligadas à linguagem e ao sistema de tempo de execução . -
I / O e rede de acesso a plataforma do sistema de arquivos , e mais geralmente redes através do
java.io
,java.nio
ejava.net
pacotes. Para rede, o SCTP está disponível emcom.sun.nio.sctp
. -
Pacote de matemática :
java.math
fornece expressões matemáticas e avaliação, bem como tipos de dados de números inteiros e decimais de precisão arbitrária. - Coleções e utilitários: estruturas de dados de coleção integradas e classes de utilitários para expressões regulares , simultaneidade , registro e compactação de dados .
-
GUI e gráficos 2D : o pacote AWT (
java.awt
) operações básicas da GUI e se vincula ao sistema nativo subjacente. Ele também contém a API de gráficos 2D. O pacote Swing (javax.swing
) é construído em AWT e fornece um kit de ferramentas de widget independente de plataforma , bem como uma aparência plugável . Também lida com componentes de texto editáveis e não editáveis. - Som: interfaces e classes para leitura, escrita, sequenciamento e sintetização de dados sonoros.
- Texto:
java.text
trata de textos, datas, números e mensagens. - Pacote de imagens:
java.awt.image
ejavax.imageio
fornece APIs para escrever, ler e modificar imagens. - XML : transformações SAX , DOM , StAX , XSLT , XPath e várias APIs para serviços da Web , como protocolo SOAP e JAX-WS .
- APIs CORBA e RMI , incluindo um ORB integrado
- A segurança é fornecida por
java.security
e os serviços de criptografia são fornecidos porjavax.crypto
. -
Bancos de dados : acesso a bancos de dados SQL via
java.sql
- Acesso aos mecanismos de script: O
javax.script
pacote dá acesso a qualquer linguagem de script em conformidade . -
Applets :
java.applet
permite que os aplicativos sejam baixados em uma rede e executados em uma caixa de proteção protegida -
Java Beans :
java.beans
fornece maneiras de manipular componentes reutilizáveis. - Introspecção e reflexão: java.lang.Class representa uma classe, mas outras classes, como Método e Construtor, estão disponíveis em
java.lang.reflect
.
Licenciamento
Licenças anteriores
Antes do lançamento do OpenJDK, o JDK era baseado em uma licença proprietária .
Seguindo sua promessa de lançar um JDK totalmente compilável baseado em código quase totalmente gratuito e aberto no primeiro semestre de 2007, a Sun lançou o código-fonte completo da Class Library sob a GPL em 8 de maio de 2007, exceto algumas partes limitadas que foram licenciados pela Sun de terceiros que não queriam que seu código fosse lançado sob uma licença de código aberto. O objetivo da Sun era substituir as peças que permanecem proprietárias e de código fechado por implementações alternativas e tornar a Class Library totalmente gratuita e de código aberto.
Até dezembro de 2010, a parte onerada restante do JDK foi disponibilizada pela Sun e pela Oracle como plugues binários que eram necessários para construir o JDK, mas não necessários para executá-lo. em maio de 2007, a única parte da biblioteca de classes que permaneceu proprietária e de código fechado (4% em maio de 2007 para OpenJDK 7 e menos de 1% em maio de 2008 e OpenJDK 6) foi:
- A implementação SNMP .
Desde o primeiro lançamento de maio de 2007, a Sun, com a ajuda da comunidade, lançou como código-fonte aberto ou substituiu por alternativas de código-fonte aberto quase todo o código sobrecarregado:
- Todo o código do motor de áudio, incluindo o sintetizador de software , tornou-se open source. O sintetizador de software de código fechado foi substituído por um novo sintetizador desenvolvido especificamente para OpenJDK chamado Gervill ,
- Todas as classes de criptografia foram lançadas como código aberto,
- O código que dimensiona e rasteriza fontes usa FreeType de código aberto
- O gerenciamento de cores nativas usa LittleCMS de código aberto . Há uma camada conectável no JDK, de modo que a versão comercial do Java pode usar o sistema de gerenciamento de cores proprietário original e o OpenJDK pode usar o LittleCMS.
- O código rasterizador de gráficos de anti-aliasing usa o renderizador Pisces de código aberto usado no projeto phoneME .
- O plugin JavaScript é open source (o próprio motor JavaScript era open source desde o início).
Lançamento de código aberto
A partir de dezembro de 2010, todos os chamados plugs binários foram substituídos por substitutos de código aberto , tornando todo o JDK aberto.
Implementações alternativas
GNU Classpath é a outra principal biblioteca de classes de software livre para Java. Ao contrário de outras implementações, ele apenas implementa a Biblioteca de Classes e é usado por muitos tempos de execução Java gratuitos (como Kaffe , SableVM , JamVM ).
Apache Harmony era outra biblioteca de classes de software livre. Seu objetivo era implementar as outras partes da pilha Java ( Máquina Virtual , Compilador e outras ferramentas necessárias para qualquer implementação Java ).
Veja também
- Plataforma Java, Edição Standard
- Lista de APIs Java
- OpenJDK
- Implementações Java grátis
- Biblioteca padrão
- Applet Java
Referências
links externos
- Página principal do Java SE
- Java SE 10 API Javadocs
- Documentação da API Java SE
- Kits de desenvolvimento de software Java (status em agosto de 2006):