Criada em 1995 por James Gosling (canadense radicado nos EUA) na Sun Microsystems (empresa estadunidense) com o objetivo de ser uma linguagem para controlar pequenos dispositivos, como televisores, videocassetes e aparelhos de TV a cabo.
Adquirida pela Oracle em 2008
Licença GNU GPL (General Public License) - Gratuita, livre para baixar e usar, mas não para redistribuir. "Quase open source".
A linguagem de programação Java é uma das linguagens de programação mais populares e amplamente utilizadas no mundo.
Embora seja difícil saber o número exato de usuários, é estimado que existam mais de 9 milhões de desenvolvedores Java em todo o mundo*.
O Octoverse ranking baseado no GitHub aponta Java na quarta posição de linguagem mais popular em 2023*
É difícil determinar o número exato de máquinas virtuais Java (JVMs) em execução atualmente, pois elas podem estar em qualquer lugar, desde desktops e servidores, até dispositivos embarcados e sistemas de missão crítica. A Oracle, que é a proprietária da tecnologia Java, afirma que existem mais de 60 bilhões de JVMs executando em todo o mundo (Fonte: https://www.oracle.com/br/java/).
Outras linguagens de programação, como Scala e Kotlin, utilizam a JVM para compilação e execução.
A linguagem Java é usada em uma ampla variedade de aplicativos, desde aplicativos de desktop até aplicativos empresariais complexos. Além disso, a plataforma Java é usada em muitos dispositivos, desde celulares até equipamentos médicos e sistemas de automação industrial.
As empresas precisam de soluções de software robustas para planejamento e alocação de recursos, operações diárias e integração de departamentos para um fluxo de trabalho mais eficiente. Os sistemas ERP baseados em nuvem Java aprimoram a segurança e lidam com operações e dados com mais precisão e atendem às necessidades de um grande número de setores, como: manufatura, seguros, educação, saúde, comércio eletrônico, imóveis, finanças, comunicação, energia, etc.
Saúde: Usando Java, é possível criar sistemas de diagnóstico e gerenciamento de saúde, soluções de BI e aplicativos para dispositivos vestíveis e embarcados. Os aplicativos mHealth, por exemplo, são dedicados ao gerenciamento de estilo de vida e condicionamento físico, nutrição, dieta, saúde da mulher, consulta médica online, gerenciamento de doenças e muito mais. Exemplos de apps de saúde que usam Java: Samsung Healthcare, CVS Health, Cardinal Health
Finanças: Java é aplicável ao setor financeiro, incluindo bancos, mercados de capitais e seguros, fornecendo soluções responsivas, seguras e resilientes. É amplamente utilizado para a criação de vários softwares relacionados a finanças, como aplicativos do lado do servidor, que permitem uma troca rápida e consistente de dados entre o cliente e o servidor, sistemas de liquidação e confirmação de escrita, processamento de dados e assim por diante. Exemplos de instituições financeiras que usam Java: Banco do Brasil, NuBank, Inter, Citigroup
Automotivo: Java capacita o desenvolvimento de sistemas automotivos, conduzindo muitos recursos de carros modernos, como controladores incorporados, software veicular e serviços em nuvem. Os fabricantes de automóveis se esforçam para melhorar a segurança e o controle, bem como o entretenimento e outras experiências digitais para motoristas e passageiros. Exemplos de empresas automotivas que usam Java: Toyota, Mercedes, Fiat
E-commerce : Java é difundido no desenvolvimento de e-commerce. Possibilita a criação de plataformas de e-commerce altamente confiáveis e produtivas com uma interface amigável, além da possibilidade de integrações de terceiros. O uso de Java garante alta velocidade, elimina travamentos, tempo limite do usuário e outras falhas e fornece uma experiência de usuário consistente em vários canais. Uma plataforma de comércio eletrônico desenvolvida em Java é capaz de lidar com quantidades maiores de pedidos e processar dados em tempo real para uma melhor tomada de decisão. Exemplos de comércio eletrônico que usam Java: Amazon, Mercado Livre, SHEIN
Fonte: Autoral, feita com Midjourney.
A linguagem Java é citada como a 2ª habilidade mais requisitada por cargos da área de Engenharia no LinkedIn.
Alguns salários de cargos de trabalho em Java no Brasil por plataforma:
Existem tipos de certificações Java em diferentes níveis. Atualmente*, o preço inicial da certificação em Java SE é de US$ 245,00 (há descontos e até gratuidade para estudantes).
Algumas das principais características da linguagem Java são:
É case sensitive
Linguagem Multiparadigma: orientada a objetos; estruturada; imperativa; genérica; funcional; reflexiva; concorrente.
Alto nível de abstração: Java é considerada uma linguagem de programação de alto nível porque fornece abstrações que permitem que os desenvolvedores escrevam código mais facilmente e se concentrem na lógica do programa, em vez de se preocupar com detalhes de baixo nível, como gerenciamento de memória e alocação de recursos.
No entanto, como resultado de sua abordagem de alto nível, a linguagem Java pode ser considerada verbosa, o que significa que pode exigir mais linhas de código do que outras linguagens de programação para realizar as mesmas tarefas. Isso ocorre porque a Java enfatiza a clareza descritiva em detrimento da concisão o que é especialmente importante em projetos grandes e complexos e/ou que exijam manutenção de longo prazo.
Mesmo assim, é uma versão mais limpa da sintaxe das linguagens da época, como C++.
Segurança: Java possui recursos de segurança robustos que protegem os programas contra ameaças como vírus, malware e ataques hackers.
Extensibilidade: além de ser uma linguagem de arquitetura altamente extensível, possui uma ampla variedade de APIs (Application Programming Interfaces) disponíveis, o que permite que os desenvolvedores criem facilmente programas complexos e eficientes.
Tipagem: estática e forte
Requer que todas as variáveis tenham um tipo declarado e este tipo não pode ser alterado;
Suporta o uso de conversões explícitas de valores aritméticos para outros tipos aritméticos;
Não possui ponteiros (alocar memória da máquina para armazenar informações), somente referências a objetos;
Os métodos do sistema de tipos estático (um método static realiza uma tarefa que não depende do conteúdo de nenhum objeto) em Java são controlados pela máquina virtual Java.
Portabilidade: códigos em Java podem ser executados em diferentes sistemas operacionais e arquiteturas de hardware sem a necessidade de modificação do código-fonte. Assim, pode-se dizer que Java é uma linguagem multiplataforma e seus programas são independentes de plataforma.
É Compilada e Interpretada:
Compilação: O código-fonte Java é escrito em arquivos de texto simples com extensão .java. O compilador Java converte esses arquivos em bytecode Java em arquivos .class, que é uma linguagem de programação de nível intermediário. Durante a compilação, o compilador verifica a sintaxe do código-fonte e emite erros de compilação se o código não estiver correto.
Interpretação: O bytecode gerado pelo compilador Java é interpretado por uma máquina virtual Java (JVM). A JVM é um software que simula um processador e um ambiente de execução para o bytecode Java. Se for necessário mais desempenho, a JVM converte o bytecode em código nativo para a CPU específica, ganhando mais desempenho.
Execução: O código nativo gerado pela JVM é executado pelo sistema operacional. Durante a execução, o código é carregado na memória RAM e executado pelo processador. O código pode interagir com o sistema operacional e com outros aplicativos em execução.
O processo de compilação, interpretação e execução da linguagem Java permite que os programas Java sejam altamente portáteis e independentes da plataforma. O bytecode Java é executado em qualquer sistema que tenha uma JVM instalada, o que significa que o mesmo código-fonte Java pode ser compilado em diferentes plataformas sem a necessidade de modificação do código-fonte. Isso torna a linguagem Java uma escolha popular para desenvolvimento de software empresarial e outros aplicativos que precisam ser executados em diferentes sistemas operacionais e arquiteturas de hardware.
Existem vários tipos de arquivos Java que são usados para diferentes propósitos. Alguns dos principais tipos de arquivos Java são:
Arquivos de código-fonte (.java): Esses arquivos contêm o código-fonte Java escrito pelos desenvolvedores. O código é escrito em arquivos de texto simples com a extensão .java. Esses arquivos são compilados em bytecode Java pelos compiladores Java.
Arquivos de bytecode (.class): Esses arquivos contêm o código intermediário em bytecode Java gerado pela compilação dos arquivos de código-fonte Java. Os arquivos de bytecode têm a extensão .class e são executados pela máquina virtual Java (JVM).
Arquivos de manifesto (.mf): Esses arquivos contêm informações sobre o pacote Java, como nome, versão, descrição, lista de classes e outras informações relevantes. O manifesto é um arquivo de texto simples com a extensão .mf.
Arquivos para Distribuição:
Arquivos JAR (.jar): Um arquivo JAR é um arquivo compactado que contém arquivos de classe Java (.class), metadados e recursos (texto, imagens, etc.) em um arquivo para distribuição. O arquivo JAR é usado para distribuir e implantar bibliotecas e aplicativos Java. Os arquivos JAR têm a extensão .jar.
Arquivos WAR (.war): Similar ao JAR, um arquivo WAR é um arquivo compactado que contém arquivos de classe Java, arquivos de recurso, arquivos de manifesto e outros arquivos necessários para executar um aplicativo Java Web. Os arquivos WAR têm a extensão .war.
Arquivos JMOD (.jmod): Similar ao JAR, um arquivo JMOD é um arquivo compactado que contém arquivos de classe Java (.class) organizados em módulos e seus metadados e recursos. A distribuição via JMOD é mais rápida que do JAR. Esse formato é transportável, mas não é executável. Os arquivos JMOD têm a extensão .jmod.
Arquivos EAR (.ear): Um arquivo EAR é um arquivo compactado que contém arquivos JAR, arquivos WAR e outros arquivos necessários para executar um aplicativo empresarial Java. É usado principalmente em ambientes empresariais e de servidor. Os arquivos EAR têm a extensão .ear.
A versão mais recente da linguagem* é a JDK 22.
Estratégia de atualizações a cada 6 meses da linguagem Java. Fonte: https://www.infoq.com/news/2024/03/java22-released/
Java é uma plataforma robusta que possui vários componentes para permitir a criação e execução de aplicativos em diferentes ambientes. Aqui estão os principais componentes da plataforma Java que utilizaremos na disciplina:
Java Virtual Machine (JVM): É a camada de abstração de hardware que permite que aplicativos Java sejam executados em diferentes plataformas sem a necessidade de recompilação. A JVM é responsável por interpretar o código Java compilado e executá-lo no sistema hospedeiro.
Java Development Kit (JDK): É o conjunto de ferramentas necessárias para desenvolver e compilar aplicativos Java. Inclui o compilador Java, o Javadoc (para gerar documentação do código fonte), a JShell (para codificar e interpretar via linha de comando) para o JUnit (para testes de unidade) e outras ferramentas para desenvolvimento de software.
Java Runtime Environment (JRE): É o ambiente de tempo de execução para aplicativos Java. É necessário para executar qualquer aplicativo Java em um sistema.
Bibliotecas de classes Java (APIs): São as bibliotecas padrão da linguagem Java que contêm um conjunto de classes e interfaces prontas para uso. Essas bibliotecas são incluídas com o JDK e o JRE. É possível criar cada classe e método de que precisar para construir programas Java e combinar com as ricas coleções de classes e métodos existentes nas bibliotecas Java.
Java SE: As APIs Java Platform Standard Edition (Java SE) definem a plataforma Java central para computação de uso geral. Essas APIs são bibliotecas divididas em módulos cujos nomes começam com java.
JDK: As APIs do Java Development Kit (JDK) são específicas do JDK e não estarão necessariamente disponíveis em todas as implementações da Plataforma Java SE. Essas APIs estão em módulos cujos nomes começam com jdk.
Outras ferramentas Java que poderão ser vistas ao longo da graduação:
Applet: É um aplicativo Java que é executado em um navegador da web. Ele usa a JVM para executar o código Java e é executado em uma sandbox, o que significa que ele não tem acesso total aos recursos do sistema.
Enterprise JavaBeans (EJBs): É um componente da plataforma Java EE (Enterprise Edition) que fornece serviços de middleware para aplicativos corporativos. EJBs são usados para gerenciamento de transações, segurança e outros recursos.
Servlets e JSPs: São tecnologias usadas para criar aplicativos da web em Java. Servlets são componentes Java que respondem a solicitações do cliente e geram respostas. JSPs são páginas HTML com código Java embutido que são compiladas em servlets.
JavaFX: É uma plataforma para criação de aplicativos de desktop e móveis com interface gráfica de usuário (GUI) rica e interativa.
javac – compilador
java – interpretador de bytecodes
Exemplo de como compilar e executar um arquivo em Java, após instalação Java:
javac HelloWorld.java
java HelloWorld
jar - compactar para distribuir
Coloque todos os arquivos que deseja incluir no diretório. Abra o terminal na raiz do diretório que contém os arquivos que deseja incluir no arquivo JAR. Use o comando jar para criar o arquivo JAR, especificando as opções necessárias e o nome do arquivo JAR que deseja criar. Por exemplo:
jar cvf meu-arquivo.jar HelloWorld.class HelloWorld2.class pasta-arquivos
Onde:
c: cria um novo arquivo JAR.
v: exibe o progresso da operação.
f: indica que o próximo argumento é o nome do arquivo JAR a ser criado.
meu-arquivo.jar: o nome do arquivo JAR que deseja criar.
HelloWorld.class, HelloWorld2.class: os arquivos que deseja incluir no arquivo JAR.
pasta-arquivos: a pasta contendo os arquivos que deseja incluir no arquivo JAR.
Lembre-se de que o arquivo JAR deve conter pelo menos um arquivo .class compilado e, caso haja dependências externas, elas também devem estar incluídas no arquivo JAR.
javadoc – documentação
jdb - debugger
Veja mais ferramentas do kit de desenvolvimento em: https://docs.oracle.com/en/java/javase/20/docs/specs/man/
Em caso de dúvidas, consulte sempre a documentação oficial mais recente* da Java Platform Standard Edition.
class HelloWorld {
// o método main inicia a execução do aplicativo Java
public static void main(String[] args) {
//o método System.out.println imprime o texto na saída da console
System.out.println("Hello, world!");
}
}
class declara uma classe em Java;
{} delimita o código para um bloco de instruções;
Uma classe executável em Java deve ter o método main() - este método funciona como ponto de entrada do fluxo de controle nos programas Java, senão é uma classe conceitual;
public e static são modificadores de métodos que indicam respectivamente que o método principal é público (visível para toda a aplicação) e estático (não depende de instâncias/objetos);
void é o tipo de retorno do método principal, este tipo significa vazio/nada, ou seja, o método não possui retorno;
Comentários são feitos com // (duas barras) ou /* */ (barra + asterisco) para comentários multilinhas;
Instruções em Java terminam com ; (ponto e vírgula)
System.out.println() é o método utilizado para imprimir/escrever na saída da console / terminal com uma quebra de linha;
Conteúdos de texto do tipo String devem ser escritos com aspas duplas " "
Crie o código fonte em um conjunto de arquivos de texto escrito em Java .java;
Compile esses arquivos para produzir um conjunto de arquivos binários .class correspondentes;
Execute-os juntos como um aplicativo.
Como compilar e executar um arquivo em Java via linha de comando:
javac HelloWorld.java
java HelloWorld
Este é um exemplo simples de programa Java que recebe um argumento de linha de comando (o nome de uma pessoa) e imprime uma saudação personalizada.
public class Saudacao {
public static void main(String[] args) {
// Verifica se foi passado um argumento de linha de comando - esta verificação é opcional
if (args.length != 1) {
System.err.println("Como usar: java Saudacao <nome>");
System.exit(1); // interrompe a execução do programa
}
// Lê o argumento de linha de comando na primeira posição, ou seja, posição 0
String nome = args[0];
// Imprime a saudação personalizada
System.out.println("Olá, " + nome + "! Bem-vinde!");
}
}
Neste exemplo, criamos uma classe Java chamada Saudacao. O método main desta classe recebe um argumento de linha de comando (o nome de uma pessoa), verifica se um único argumento foi passado e, em seguida, imprime uma saudação personalizada contendo o nome da pessoa;
A instrução if () {} verifica se a condição escrita entre parênteses é verdadeira para executar o bloco de código descrito entre chaves;
Neste caso, a instrução if verifica se o comprimento do vetor de Strings de argumentos da linha de comando args recebido pelo método main é diferente de 1, ou seja, se nenhuma palavra ou se mais de uma palavra foi passada como argumento;
Em caso positivo, uma mensagem de erro é escrita no terminal via System.err.println() instruindo como o programa deve ser executado e logo depois o programa tem sua execução interrompida via System.exit(1);
Posteriormente, o valor da posição inicial do vetor de Strings args, ou seja, args[0] é atribuído na declaração de uma String chamada nome;
A String nome é concatenada com uma mensagem de saudação personalizada para exibição no terminal.
Para testar o programa, é possível compilá-lo e executá-lo no terminal usando os seguintes comandos:
javac Saudacao.java
java Saudacao Ada // Executa o programa com o argumento "Ada"
Este exemplo deve imprimir a seguinte saída no terminal:
Olá, Ada! Bem-vinde!
Duke é o mascote da linguagem JAVA e foi projetado para representar um “agente de software” que executava tarefas para o usuário. Duke foi o host interativo que possibilitou um novo tipo de interface de usuário que ia além dos botões, mouses e menus pop-up do mundo da computação de desktop. Duke foi criado pelo artista Joe Palrang e registrado em 2006. Joe passou a trabalhar em filmes de animação populares como Shrek e Os sem Floresta.
* Esta página foi atualizada em maio de 2024.