Java 15
Instalação de ambiente - UBUNTU 20.04
Instalando o Java 15
$ sudo add-apt-repository ppa:linuxuprising/java$ sudo apt update
$ sudo apt install oracle-java15-installer
$ java --version
$ ll /usr/lib/jvm/
$ ll /usr/lib/jvm/java-15-oracle
Em alguns casos será necessário colocar o caminho de instalação nas variáveis de ambiente do sistema operacional.
$ export JAVA_HOME="/usr/lib/jvm/java-15-oracle"$ export PATH=$JAVA_HOME/bin:$PATH
Ferramentas de Build (Gradle ou Maven)
Acesse o site do Gradle e baixe a ferramenta.
$ mkdir /opt/gradle$ cd
$ unzip -d /opt/gradle gradle-6.8.2-bin.zip
$ ls /opt/gradle/gradle-6.8.2
$ export PATH=$PATH:/opt/gradle/gradle-6.8.2/bin
$ sudo apt purge gradle //Se precisar excluir versões antigas
$ gradle -v //para verificar a instalação
Uma outra ferramenta muito boa também é a Maven e baixe a ferramenta.
$ mkdir /opt/maven$ unzip -d /opt/maven apache-maven-3.6.3-bin.zip
$ ls /opt/maven/apache-maven-3.6.3
$ sudo apt purge maven // se precisar excluir versões antigas
$ export PATH=$PATH:/opt/maven/apache-maven-3.6.3/bin
$ mvn -v //para verificar a instalação
Diferenças básicas entre Maven e Gradle é que o gradle é uma ferramenta mais nova, o mave utiliza xml, o gradle usa uma linguagem de programação chamada Groovy.
Para resolver problemas de compatibilidade entre desenvolvedores vamos utilizar alguns comandos, garantindo a mesma versão para todos os desenvolvedores. Para tanto crie uma nova pasta dentro de Documentos, acesse a pasta e execute os comandos:
$ gradle wrapper$ ./gradlew -v
$ mvn -N io.takari:maven:wrapper
$ ./mvnw -v
Instalando Ferramenta IDE
Baixe a ferramenta de desenvolvimento INTELLIJ IDEA
$ sudo tar -xzf ideaIC-2020.3.2.tar.gz$ cd idea-IC-203.7148.57/bin/
$ ./idea.sh //Acessar a IDE
Iniciar um Projeto
Vamos iniciar um novo projeto Java através do site https://start.spring.io/.
Maven Project
- Abra o site Spring
- Marque as opções projeto: Maven Project, linguagem: Java, Spring Boot: 2.4.3, pacote: jar e Java 15.
- Preencha os dados de Group(domínio da empresa): br.com.fpsmoc
- Artifact: exemplo-maven
- Name: exemplo-maven
- Description: Projeto de exemplo do curso de Java
- Package name: não precisa alterar, normalmente é preenchido automaticamente.
- Dependencies: Adiciona a dependência Spring Web.
- Clique no botão Generate Project: Salva o arquivo em qualquer pasta
- Crie uma pasta específica e extraia o conteúdo para ela.
Gradle Project
- Abra o site Spring
- Marque as opções projeto: Gradle Project, linguagem: Java, Spring Boot: 2.4.3, pacote: jar e Java 15.
- Preencha os dados de Group(domínio da empresa): br.com.fpsmoc
- Artifact: exemplo-gradle
- Name: exemplo-gradle
- Description: Projeto de exemplo do curso de Java
- Package name: não precisa alterar, normalmente é preenchido automaticamente.
- Dependencies: Adiciona a dependência Spring Web.
- Clique no botão Generate Project: Salva o arquivo em qualquer pasta
- Crie uma pasta específica e extraia o conteúdo para ela.
Algumas definições
O que é Java?
É uma linguagem de programação e plataforma computacional lançada em 1995 pela Sun Microsystems, por um time comandado por James Gosling. Anos depois foi adquirida pela Oracle.
Diferente de outras linguagens de programação, que são compiladas para código nativo, o java é compilado para um bytecode que é interpretado por uma máquina virtual.
O que é o compilador?
Um compilador é um programa que, a partir de um código fonte, cria um programa semanticamente equivalente, porém escrito em outra linguagem, código objeto. Um compilador traduz um programa de uma linguagem textual para uma linguagem de máquina, específica para um processador e sistema operacional.
O nome compilador é usado principalmente para os programas que traduzem o código fonte de uma linguagem de programação de alto nível para uma linguagem de programação de baixo nível (por exemplo, Assembly ou código de máquina).
O que é o bytecode?
É o código originado da compilação de programas Java. O bytecode é o programa interpretado e executado pela Máquina Virtual Java, JVM.
O que é a JVM?
Primeiramente é bom saber o que é uma VM: Uma Máquina Virtual, ou Virtual Machine, é um software que simula uma máquina física e consegue executar vários programas, gerenciar processos, memória e arquivos. Tudo isso faz parte de uma plataforma com memória, processador e outros recursos totalmente virtuais, sem dependência do hardware.
A JVM é uma máquina virtual que executa programas Java, executando os bytecodes em linguagem de máquina para cada sistema operacional.
Em linguagens compiladas diretamente para um sistema operacional (SO) específico, esse programa não irá executar em outro SO, havendo a necessidade de compilar uma versão do software para cada SO.
Com o Java, compilamos para a JVM, o bytecode será executado pela máquina virtual, e não diretamente pelo SO, assim, o software escrito em Java possui portabilidade para qualquer sistema operacional, porém, cada JVM deve ser construída para um SO específico.
O que é JRE?
JRE significa Java Runtime Environment, ou Ambiente de Execução do Java, é composto pela Java Virtual Machine (JVM), BIBLIOTECAS e APIs da linguagem Java e outros componentes para suporte da plataforma Java. https://openjdk.java.net/install/
$ sudo apt-get install openjdk-15-jre
O que é a JDK?
Java Development Kit (JDK), Kit de Desenvolvimento Java, é um conjunto de utilitários que permitem criar software para a plataforma Java. É composto pelo compilador Java, bibliotecas da linguagem, ferramentas e a JRE. https://openjdk.java.net/install/
$ sudo apt-get install openjdk-15-jdk
O que é a Java SE?
Java Standard Edition (SE), é a distribuição mínima da plataforma de desenvolvimento de aplicações Java. OpenJDK é a implementação de referência opensource da Plataforma Java, Java SE, que ainda é mantida pela Oracle. https://openjdk.java.net
O que é Java EE?
Java Enterprise Edition, é uma extensão da Java SE que possui suporte a desenvolvimento de sistemas corporativos. Além do mínimo da plataforma, o Java EE possui diversas especificações de partes da infra estrutura de aplicações, como acesso a banco de dados, mensageria, serviços web, parser de arquivos e outras.
Servidores de Aplicações Java EE, sabem seguir essas especificações e implementar os recursos para os usuários. Exemplo: JBoss (RedHat), Weblogic (Oracle), WebSphere (IBM) e Gassfish é implementação de referência Opensource: https://javaee.github.io/glassfish.
O que é Jakarta EE?
Com a falta de investimento da Oracle no Java, ela cedeu todo o código, implementações e especificações do Java EE para a Eclipse Foundation, mas como o nome Java EE é uma marca registrada, foi escolhido o nome Jakarta EE. Agora a evolução das especificações e padrões do Java será feito sob o nome Jakarta EE, com compatibilidade com o Java EE.
Exemplo de Aplicação:
- Abra o terminal.
- Cria um novo arquivo hello.java e edita no vim. $ mkdir hello-java; $ cd hello-java; $ vim hello.java;
- Crie uma classe pública:
- Compilando o arquivo .java: $ javac Hello.java
- Executando o arquivo .class: $ java Hello
Iniciando um novo projeto no IntelliJ
- Inicie o IntelliJ
- Novo projeto
- Selecione Gradle, Project SDK: 15, Java e clique em próximo.
- Nome do projeto: caracteristicas-da-linguagem
- GoupId: br.com.fpsmoc e clique Finalizar.
TIPOS
Tipos: Na linguagem java existem vários tipos (Primitivos, Wrappers, Não Primitivos e Tipagem forte e estática).
Os tipos Primitivos não aceitam NULL e possuem valores default. Mais detalhes em: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Wrappers: São objetos que representam os primitivos (é uma classe), auto-boxing (auto construir o objeto, seguindo a mesma regra dos primitivos) e Unboxing (cria um objeto a partir de primitivos).
Os tipos não primitivos: String, Number, Object, qualquer outros objetos.
Tipagem forte e estática: Exemplo var Inferência de tipo.
Modificadores de acesso
- public: pode ser acessada de qualquer lugar por qualquer entidade que possa visualizar a classe a que ela pertence.
- private: os métodos e atributos da classe definidos como privados não podem ser acessados ou usados por nenhuma outra classe. Esses atributos e métodos também não podem ser visualizados pelas classes herdadas.
- protected: torna o membro acessível às classes do mesmo pacote ou através de herança, seus membros herdados não são acessíveis a outras classes fora do pacote em que foram delcarados.
- default (padrão): a classe e/ou seu membros são acessíveis somente por classes do mesmo pacote, na sua declaração não é definido nenhum tipo de modificador, sendo este identificado pelo compilador.
- abstract: não existe é somenta a ideia de algo. Esse modificador não é aplicado nas variáveis, apenas em classes e métodos. Uma classe abstrata não pode ser instanciada. Se houver alguma declaração de um método como abstract (abstrato), a classe também deve ser marcada como abstract.
- static: é usado para a criação de uma variável que poderá ser acessada por todas as instâncias de objetos desta classe como uma variável comum, ou seja, a variável criada será a mesma em todas as instâncias e quando seu conteúdo é modificado numa das instâncias, a modificação ocorre em todas as demais. E nas declarações de métodos ajudam no acesso direto à classe, portanto não é necessário instanciar um objeto para acessar o método.
- final: quando é aplicado na classe, não permite estender, nos métodos impede que o mesmo seja sobrescrito (overriding) na subclasse, e nos valores de variáveis não pode ser alterado depois que já tenha sido atribuído um valor.
Interfaces
- Métodos abstratos: Devem ser implementados por todos; Novos métodos quebram as implementações;
- Métodos default: São herdados a todos que implementam; Novos métodos não quebram as implementações;
- Herança múltipla: O java não possui herança múltipla, no entanto, com as interfaces é possível implementa-la.
Enums
Basicamente é dicionários de dados imutáveis e não permite criar novas instâncias, o construtor é sempre declarado como private e por convenção, por serem objetos constantes e imutáveis (static final), os nomes são em MAIÚSCULOS.
Características da Linguagem
Strings
Strings: É uma sequência de caracteres e estão no pacote java.lang
Exemplo:Exemplo2: Utilizando o StringBuilder: Exemplo4:
Laços, condicionais e operadores
IF
É uma palavra reservada do Java para criar condições se verdadeira faz uma determinada coisa e se for falsa faz outra coisa. Um if pode ser escrita numa única linha, não há necessidade de colocar {}.IF Ternário
Na condição ternária se a condição for verdadeira será impresso o que está a direita da ? caso contrário será impresso o que está a direita do : (dois pontos);FOR
While
Testa primeiro o a condição e depois executa o bloco de código.Do/While
Executa o bloco de código primeiro e depois testa a condição. Garante que o bloco de código seja executado pelo menos 1 vez. Exemplo:Operador Igualdade
O operador de igualdade (==) é utilizado para comparar duas ou mais condições.Operador Lógico
São os operadores para juntar condições e(&&) só será verdadeira se todas as condições forem verdadeiras, ou(||) só será false se todas as condições forem falsas. Podemos também utilizar os operadores &(e), |(ou). Quando se utiliza a segunda forma & ou |, se a primeira condição do <condição 1> && <condição 2> for falsa a segunda não será verficada, já utilizando somente um \amp;, mesmo que a primeira condição for falsa a segunda também será verificada.Operador Incremento
++valor à esquerda, significa que primeiro incremento e depois avalio a expressão, já valor++ à direita, primeiro avalio a expressão e depois incremento. O mesmo funciona com o operador de decremento.Operadores Matemáticos
Os operadores matemáticos são Adição(+), Subtração(-), Multiplicação(*), Divisão(/), Módulo - resto da divisão(%).Operadores Relacionais
São os operadores que se consegue fazer relações de maior(>), menor(<), maior ou igual(>=), menor ou igual(<=).
Convenções de nomes
Nomes de classes: primeira letra maiúscula e o restante minúscula. Nome composto utilize CamelCase.
Nomes de métodos: toda minúscula. Se for composto começa com minúscula e CamelCase.
Nomes de variáveis: começa com letras minúsculas e não se utiliza caracteres especiais. O uso do var é opcional.
Existem vários plugins de boas práticas para codificações em equipe:
Checkstyle Gradle Plugin: https://docs.gradle.org/current/userguide/checkstyle_plugin.html e https://github.com/checkstyle/checkstyle
PMD Gradle Plugin: https://docs.gradle.org/current/userguide/pmd_plugin.html
Para utilizar os plugins no projeto Java, procure por build.gradle (por exemplo), é possível verificar que logo nas primeiras linhas já tem o plugin Java, basta adicionar os plugins checkstyle e pmd.
Debug de código
Orientação a Objetos
A programação Orientada a Objetos impõe disciplina sobre a transferência indireta do controle (Robert "Uncle Bob" Martin - Livro Arquitetura Limpa)








Comentários
Postar um comentário
Deixe seu comentário: