JAVA PARA INICIANTES – 1. Introdução, Fundamentos e Prática 11/01/25 #Cap1

Informações Importantes do Capítulo 1

  • Criado pela Sun Microsystems em 1995.
  • Popularizou o conceito “Write Once, Run Anywhere” (WORA).

1. Introdução ao Java e sua Importância

História e Motivação do Java: O capítulo aborda a criação do Java, suas origens em 1995, e os motivos pelos quais ele se tornou uma linguagem tão popular e confiável, especialmente em sistemas corporativos, dispositivos móveis e IoT.
Java é uma linguagem de programação orientada a objetos, robusta e de alto nível, amplamente utilizada no desenvolvimento de aplicações corporativas, sistemas empresariais, web, e aplicações móveis. Desenvolvido pela Sun Microsystems (agora pertencente à Oracle), é conhecido por sua portabilidade, segurança, e forte suporte para multithreading. Java é altamente escalável e possui um vasto ecossistema de bibliotecas, frameworks como Spring e Hibernate, além de ferramentas de integração, como o Maven e o Gradle. A linguagem também é usada em ambientes corporativos por sua capacidade de processamento eficiente e confiabilidade em execução nativa. Além disso, Java oferece suporte a diferentes arquiteturas e sistemas operacionais, tornando-o uma escolha popular para desenvolver software robusto e escalável.

EVOLUÇÃO DO JAVA

Um resumo das principais features desde o início!

<span># Java 1.0 (1995) – O Começo </span>
- Write Once, Run Anywhere <span>(</span>WORA<span>)</span>
- Suporte a:
- Applets
- Multithreading básico
<span># Java 1.2 (1998) – Java 2 e a Revolução </span>
- Swing: Nova biblioteca para GUIs
- Collections Framework: Estruturas como ArrayList e HashMap
- JIT Compiler: Melhor desempenho
<span># Java 1.4 (2002) – Robustez e Desempenho </span>
- Assertions para depuração
- Pacote java.nio: Melhorias no I/O
- Expressões Regulares <span>(</span>java.util.regex<span>)</span>
<span># Java 5 (2004) – Modernização da Linguagem </span>
- Generics: List<String>
- Enhanced <span>for</span><span>-loop</span>: <span>for</span> <span>(</span>int i : array<span>)</span>
- Annotations: @Override
- Enums e Varargs
- Concurrent API: Melhor suporte a threads
<span># Java 6 (2006) – Refinamentos ️</span>
- Melhor desempenho da JVM
- Compiler API <span>(</span>javax.tools<span>)</span>
- Java Scripting API: Integração com JavaScript
<span># Java 7 (2011) – Simplificação e Eficiência </span>
- Try-with-resources: Gerenciamento automático de recursos
- Switch com Strings
- Multi-catch em exceções
- NIO.2: Melhor manipulação de arquivos
<span># Java 8 (2014) – Programação Funcional 🤖</span>
- Lambdas: <span>(</span>x<span>)</span> -> x <span>*</span> 2
- Streams API: Processamento declarativo de coleções
- Optional: Lidar com null de forma segura
- API de Data e Hora <span>(</span>java.time<span>)</span>
- Default Methods: Métodos padrão em interfaces
<span># Java 9 (2017) – Modularização 🧩</span>
- JPMS: Java Platform Module System
- JShell: REPL para experimentaçã
<span># Java 1.0 (1995) – O Começo </span>
- Write Once, Run Anywhere <span>(</span>WORA<span>)</span>
- Suporte a:
  - Applets
  - Multithreading básico

<span># Java 1.2 (1998) – Java 2 e a Revolução </span>
- Swing: Nova biblioteca para GUIs
- Collections Framework: Estruturas como ArrayList e HashMap
- JIT Compiler: Melhor desempenho

<span># Java 1.4 (2002) – Robustez e Desempenho </span>
- Assertions para depuração
- Pacote java.nio: Melhorias no I/O
- Expressões Regulares <span>(</span>java.util.regex<span>)</span>

<span># Java 5 (2004) – Modernização da Linguagem </span>
- Generics: List<String> 
- Enhanced <span>for</span><span>-loop</span>: <span>for</span> <span>(</span>int i : array<span>)</span>
- Annotations: @Override
- Enums e Varargs
- Concurrent API: Melhor suporte a threads

<span># Java 6 (2006) – Refinamentos ️</span>
- Melhor desempenho da JVM
- Compiler API <span>(</span>javax.tools<span>)</span>
- Java Scripting API: Integração com JavaScript

<span># Java 7 (2011) – Simplificação e Eficiência </span>
- Try-with-resources: Gerenciamento automático de recursos
- Switch com Strings
- Multi-catch em exceções
- NIO.2: Melhor manipulação de arquivos

<span># Java 8 (2014) – Programação Funcional 🤖</span>
- Lambdas: <span>(</span>x<span>)</span> -> x <span>*</span> 2
- Streams API: Processamento declarativo de coleções
- Optional: Lidar com null de forma segura
- API de Data e Hora <span>(</span>java.time<span>)</span>
- Default Methods: Métodos padrão em interfaces

<span># Java 9 (2017) – Modularização 🧩</span>
- JPMS: Java Platform Module System
- JShell: REPL para experimentaçã
# Java 1.0 (1995) – O Começo - Write Once, Run Anywhere (WORA) - Suporte a: - Applets - Multithreading básico # Java 1.2 (1998) – Java 2 e a Revolução - Swing: Nova biblioteca para GUIs - Collections Framework: Estruturas como ArrayList e HashMap - JIT Compiler: Melhor desempenho # Java 1.4 (2002) – Robustez e Desempenho - Assertions para depuração - Pacote java.nio: Melhorias no I/O - Expressões Regulares (java.util.regex) # Java 5 (2004) – Modernização da Linguagem - Generics: List<String> - Enhanced for-loop: for (int i : array) - Annotations: @Override - Enums e Varargs - Concurrent API: Melhor suporte a threads # Java 6 (2006) – Refinamentos ️ - Melhor desempenho da JVM - Compiler API (javax.tools) - Java Scripting API: Integração com JavaScript # Java 7 (2011) – Simplificação e Eficiência - Try-with-resources: Gerenciamento automático de recursos - Switch com Strings - Multi-catch em exceções - NIO.2: Melhor manipulação de arquivos # Java 8 (2014) – Programação Funcional 🤖 - Lambdas: (x) -> x * 2 - Streams API: Processamento declarativo de coleções - Optional: Lidar com null de forma segura - API de Data e Hora (java.time) - Default Methods: Métodos padrão em interfaces # Java 9 (2017) – Modularização 🧩 - JPMS: Java Platform Module System - JShell: REPL para experimentaçã

Enter fullscreen mode Exit fullscreen mode

Características-chave:

  • Portabilidade (Write Once, Run Anywhere – WORA).
  • Forte tipagem e segurança.
  • Suporte a multithreading e programação orientada a objetos.

Por que escolher Java em 2024?

Comparativo entre Java e Python.

Contribuições

  • Introdução do bytecode para portabilidade.
  • Avanço da Programação Orientada a Objetos (POO) e segurança.

Bytecode

– Bytecode: código intermediário executado pela JVM.

POO

  • POO (Programação orientada a Objeto): um paradigma de programação que organiza o código em torno de objetos.
    • OS quatro pilares:
      • ABSTRAÇÃO
      • HERANÇA
      • POLIMORFISMO
      • ENCAPSULAMENTO

Tipos de Dados

  • Tipos primitivos como int, double, char.
<span>public</span> <span>class</span> <span>TiposDeDadosExample</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
<span>int</span> <span>numero</span> <span>=</span> <span>10</span><span>;</span> <span>// Tipo inteiro</span>
<span>double</span> <span>pi</span> <span>=</span> <span>3.14159</span><span>;</span> <span>// Tipo decimal</span>
<span>char</span> <span>letra</span> <span>=</span> <span>'A'</span><span>;</span> <span>// Tipo caractere</span>
<span>boolean</span> <span>verdadeiro</span> <span>=</span> <span>true</span><span>;</span> <span>// Tipo booleano</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Número: "</span> <span>+</span> <span>numero</span><span>);</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Valor de pi: "</span> <span>+</span> <span>pi</span><span>);</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Letra: "</span> <span>+</span> <span>letra</span><span>);</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Valor booleano: "</span> <span>+</span> <span>verdadeiro</span><span>);</span>
<span>}</span>
<span>}</span>
<span>public</span> <span>class</span> <span>TiposDeDadosExample</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
        <span>int</span> <span>numero</span> <span>=</span> <span>10</span><span>;</span>       <span>// Tipo inteiro</span>
        <span>double</span> <span>pi</span> <span>=</span> <span>3.14159</span><span>;</span>   <span>// Tipo decimal</span>
        <span>char</span> <span>letra</span> <span>=</span> <span>'A'</span><span>;</span>      <span>// Tipo caractere</span>
        <span>boolean</span> <span>verdadeiro</span> <span>=</span> <span>true</span><span>;</span>  <span>// Tipo booleano</span>

        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Número: "</span> <span>+</span> <span>numero</span><span>);</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Valor de pi: "</span> <span>+</span> <span>pi</span><span>);</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Letra: "</span> <span>+</span> <span>letra</span><span>);</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Valor booleano: "</span> <span>+</span> <span>verdadeiro</span><span>);</span>
    <span>}</span>
<span>}</span>
public class TiposDeDadosExample { public static void main(String[] args) { int numero = 10; // Tipo inteiro double pi = 3.14159; // Tipo decimal char letra = 'A'; // Tipo caractere boolean verdadeiro = true; // Tipo booleano System.out.println("Número: " + numero); System.out.println("Valor de pi: " + pi); System.out.println("Letra: " + letra); System.out.println("Valor booleano: " + verdadeiro); } }

Enter fullscreen mode Exit fullscreen mode

  • Objetos e faixas de valores específicos.

Conversões e Boas Práticas da Linguagem

  • Conversões implícitas ou explícitas (casting).
  • Nomes claros e uso de comentários para legibilidade.

Blocos e Estruturas de Repetição

  • Blocos organizam trechos com {}; estruturas incluem for, while, do-while.
  • Essenciais para execução repetitiva com base em condições.

Identificadores

  • Nomeiam variáveis, métodos e classes.
  • Seguem convenções (ex.: camelCase para variáveis, PascalCase para classes).

Bibliotecas

  • Inclui bibliotecas padrão como java.util e java.io.
  • Reutilização de código e redução de complexidade.

Tratando erros de Sintaxe

  • Erros comuns como esquecer ; ou {}.
  • Mensagens de erro ajudam na depuração.
  • Try Catch: é uma estrutura de programação que permite que o programador controle o fluxo de execução do código em situações imprevistas

    <span>try</span> <span>{</span>
    <span>int</span> <span>result</span> <span>=</span> <span>10</span> <span>/</span> <span>0</span><span>;</span> <span>// Possível erro de execução</span>
    <span>}</span> <span>catch</span> <span>(</span><span>ArithmeticException</span> <span>e</span><span>)</span> <span>{</span>
    <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Erro: "</span> <span>+</span> <span>e</span><span>.</span><span>getMessage</span><span>());</span>
    <span>}</span>
    <span>try</span> <span>{</span>
    <span>int</span> <span>result</span> <span>=</span> <span>10</span> <span>/</span> <span>0</span><span>;</span>  <span>// Possível erro de execução</span>
    <span>}</span> <span>catch</span> <span>(</span><span>ArithmeticException</span> <span>e</span><span>)</span> <span>{</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Erro: "</span> <span>+</span> <span>e</span><span>.</span><span>getMessage</span><span>());</span>
    <span>}</span>
    try { int result = 10 / 0; // Possível erro de execução } catch (ArithmeticException e) { System.out.println("Erro: " + e.getMessage()); }

Meus primeiros Programas

  • Exemplos básicos como “Hello, World!” para introdução. > Olá mundo
public class OláMundo <span>{</span>
public static void main<span>(</span>String[] args<span>)</span> <span>{</span>
System.out.println<span>(</span><span>"Olá, Mundo!"</span><span>)</span><span>;</span>
<span>}</span>
<span>}</span>
public class OláMundo <span>{</span>
    public static void main<span>(</span>String[] args<span>)</span> <span>{</span>
        System.out.println<span>(</span><span>"Olá, Mundo!"</span><span>)</span><span>;</span>
    <span>}</span>
<span>}</span>
public class OláMundo { public static void main(String[] args) { System.out.println("Olá, Mundo!"); } }

Enter fullscreen mode Exit fullscreen mode

  • Uso do método main e execução pelo terminal.
  • Classe Exemplo de um Obejto em Java
<span>class</span> <span>Animal</span> <span>{</span>
<span>String</span> <span>nome</span><span>;</span>
<span>void</span> <span>fazerSom</span><span>()</span> <span>{</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"O animal faz um som"</span><span>);</span>
<span>}</span>
<span>}</span>
<span>class</span> <span>Cachorro</span> <span>extends</span> <span>Animal</span> <span>{</span>
<span>void</span> <span>fazerSom</span><span>()</span> <span>{</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"O cachorro late"</span><span>);</span>
<span>}</span>
<span>}</span>
<span>public</span> <span>class</span> <span>PolimorfismoExample</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
<span>Animal</span> <span>meuAnimal</span> <span>=</span> <span>new</span> <span>Cachorro</span><span>();</span>
<span>meuAnimal</span><span>.</span><span>fazerSom</span><span>();</span> <span>// Polimorfismo em ação</span>
<span>}</span>
<span>}</span>
<span>class</span> <span>Animal</span> <span>{</span>
    <span>String</span> <span>nome</span><span>;</span>

    <span>void</span> <span>fazerSom</span><span>()</span> <span>{</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"O animal faz um som"</span><span>);</span>
    <span>}</span>
<span>}</span>

<span>class</span> <span>Cachorro</span> <span>extends</span> <span>Animal</span> <span>{</span>
    <span>void</span> <span>fazerSom</span><span>()</span> <span>{</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"O cachorro late"</span><span>);</span>
    <span>}</span>
<span>}</span>

<span>public</span> <span>class</span> <span>PolimorfismoExample</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
        <span>Animal</span> <span>meuAnimal</span> <span>=</span> <span>new</span> <span>Cachorro</span><span>();</span>
        <span>meuAnimal</span><span>.</span><span>fazerSom</span><span>();</span>  <span>// Polimorfismo em ação</span>
    <span>}</span>
<span>}</span>
class Animal { String nome; void fazerSom() { System.out.println("O animal faz um som"); } } class Cachorro extends Animal { void fazerSom() { System.out.println("O cachorro late"); } } public class PolimorfismoExample { public static void main(String[] args) { Animal meuAnimal = new Cachorro(); meuAnimal.fazerSom(); // Polimorfismo em ação } }

Enter fullscreen mode Exit fullscreen mode

BONS ESTUDOS! Aproveite a jornada.

Tópico Anterior

Próximo Tópico

原文链接:JAVA PARA INICIANTES – 1. Introdução, Fundamentos e Prática 11/01/25 #Cap1

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
The questions you ask determine the quality of your life.
你生活的品质取决于你所提出的问题
评论 抢沙发

请登录后发表评论

    暂无评论内容