{"id":798,"date":"2020-04-06T10:41:52","date_gmt":"2020-04-06T13:41:52","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=798"},"modified":"2020-04-06T10:41:54","modified_gmt":"2020-04-06T13:41:54","slug":"comecando-com-java-9-fundamentos-8","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/comecando-com-java-9-fundamentos-8\/","title":{"rendered":"Come\u00e7ando com Java 9 Fundamentos #8"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>O que \u00e9 Java?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Java \u00e9 uma linguagem de programa\u00e7\u00e3o de uso geral. Tem como recursos o suporte da programa\u00e7\u00e3o baseado na orienta\u00e7\u00e3o a objeto, procedural e paradigmas funcionais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muitas vezes pode-se ler a frase \u201cJava \u00e9 uma linguagem de programa\u00e7\u00e3o orientada a objetos\u201d. Isto significa que a linguagem Java tem recursos que suportam o paradigma de orienta\u00e7\u00e3o a objetos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma linguagem de programa\u00e7\u00e3o n\u00e3o \u00e9 orientada a objetos. \u00c9 o paradigma que \u00e9 orientado a objetos e uma linguagem de programa\u00e7\u00e3o pode ter recursos que faz a implementa\u00e7\u00e3o do paradigma de orienta\u00e7\u00e3o a objetos ficar mais f\u00e1cil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alguma vezes, programadores tem equ\u00edvocos que todos os programas escritos em Java s\u00e3o sempre orientados a objetos. Java tem recursos que suportam os paradigmas procedurais e funcionais. Voc\u00ea pode escrever um programa em Java 100% procedural sem um pingo de orienta\u00e7\u00e3o a objetos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A vers\u00e3o inicial da plataforma Java foi constru\u00edda em 1995 pela Sun Microsystems (que faz parte da Oracle Corporation desde janeiro de 2010). O desenvolvimento da linguagem de programa\u00e7\u00e3o come\u00e7ou em 1991. Inicialmente, a linguagem foi chamada de Oak para ser utilizado em decodificadores de televis\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Logo ap\u00f3s o seu lan\u00e7amento, o Java se tornou uma linguagem de programa\u00e7\u00e3o muito popular. Um dos recursos mais importantes de sua popularidade foi o recurso WORA (write once, run anywhere) \u201cescreve uma vez e execute em qualquer lugar\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse recurso permite voc\u00ea escrever um programa Java uma vez e executar em qualquer plataforma. Por exemplo, voc\u00ea pode escrever e compilar um programa Java no UNIX e executar no Microsoft Windows, Macintosh ou na m\u00e1quina UNIX sem modificar o c\u00f3digo fonte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WORA guarda a compila\u00e7\u00e3o do programa Java dentro de uma linguagem intermedi\u00e1ria chamada bytecode. O formato da plataforma bytecode \u00e9 independente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma m\u00e1quina virtual, chamada Java Virtual Machine (JVM), \u00e9 utilizada para executar o bytecode para cada plataforma. Observe que a JVM \u00e9 um programa implementado no software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o \u00e9 uma m\u00e1quina f\u00edsica \u00e9 por essa raz\u00e3o \u00e9 chamada de \u201cm\u00e1quina virtual\u201d. O trabalho de uma JVM \u00e9 transformar o bytecode em c\u00f3digo execut\u00e1vel de acordo com a plataforma que est\u00e1 sendo executado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse recurso faz a plataforma Java independente. Isto quer dizer que o programa Java pode ser executado em v\u00e1rias plataformas sem nenhuma modifica\u00e7\u00e3o. A seguir algumas caracter\u00edsticas que est\u00e3o por tr\u00e1s da popularidade do Java e aceitas na ind\u00fastria do software:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simplicidade<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ampla variedade de ambientes de uso<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Robustez<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simplicidade pode ser uma palavra subjetiva neste contexto. O C++ foi uma linguagem de programa\u00e7\u00e3o popular e poderosa amplamente utilizada na ind\u00fastria de software at\u00e9 o Java ser produzido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea foi um programador C++, o Java pode ser mais f\u00e1cil para voc\u00ea aprender. O Java tem a sintaxe muito parecida com o C\/C++, o qual foi de muita ajuda para os programadores C\/C++ aprender a linguagem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Melhor ainda, foram exclu\u00eddos recursos confusos e dif\u00edceis de utilizar corretamente do C++ (contudo muito \u00fateis). Por exemplo, o Java n\u00e3o tem ponteiros e m\u00faltiplas heran\u00e7as, os quais est\u00e3o presentes no C++.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea est\u00e1 aprendendo Java como sua primeira linguagem de programa\u00e7\u00e3o, pode ser que n\u00e3o seja t\u00e3o simples assim para voc\u00ea aprender. Porque como foi dito antes, a simplicidade do Java como qualquer outra linguagem de programa\u00e7\u00e3o \u00e9 muito subjetiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A linguagem Java e suas bibliotecas (v\u00e1rios pacotes contidos nas classes Java) tem crescido desde a sua primeira vers\u00e3o. Voc\u00ea precisa fazer um grande esfor\u00e7o para ser um bom programador Java.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um programa desenvolvido em Java pode ser utilizado em diferentes ambientes. Voc\u00ea pode escrever programas em Java que podem ser utilizados no ambiente do cliente e servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O uso mais popular do Java no seu in\u00edcio foi os applets, o qual foi depreciado (removido) do Java SE 9. Um applet \u00e9 um programa Java embutido em uma p\u00e1gina na internet, que utiliza o HyperText Markup Language (HTML), e mostra o resultado no navegador como o Microsoft Internet Explorer, Google Chrome etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O c\u00f3digo applet \u00e9 guardado no servidor, o download \u00e9 feito pela a m\u00e1quina cliente quando a p\u00e1gina HTML tem uma refer\u00eancia para um applet e assim \u00e9 executado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Java possui recursos que faz as aplica\u00e7\u00f5es serem mais f\u00e1ceis de distribuir. Uma aplica\u00e7\u00e3o distribu\u00edda consiste em programas executados em diferentes m\u00e1quinas conectadas por uma rede.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java tem recursos que torna f\u00e1cil o desenvolvimento de aplica\u00e7\u00f5es concorrentes. Uma aplica\u00e7\u00e3o concorrente tem m\u00faltiplas intera\u00e7\u00f5es, threads executados em paralelo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Robustez de um programa refere-se \u00e0 habilidade de manipular o m\u00ednimo de situa\u00e7\u00f5es inesperadas. Situa\u00e7\u00f5es inesperadas s\u00e3o conhecidas como erro no programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Java fornece v\u00e1rios recursos que tem robustez para checar erros durante a execu\u00e7\u00e3o e produ\u00e7\u00e3o do programa. A seguir apresento tr\u00eas diferentes tipos de erros que podem ocorrer em um programa Java.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compile-time errors<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Runtime errors<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Logic errors<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erros de compile-time errors s\u00e3o conhecidos como erros de sintaxe. Eles s\u00e3o causados por uso incorreto da linguagem Java. Eles s\u00e3o detectados pelo o compilador Java.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um programa com compile-time errors n\u00e3o compila para bytecode at\u00e9 os erros serem consertados. Esquecer um ponto e v\u00edrgula no fim de uma linha de programa\u00e7\u00e3o, atribuir um valor fracionado como 10,23 para uma vari\u00e1vel do tipo inteiro, s\u00e3o exemplos de compile-time errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Runtime errors acontece quando um programa \u00e9 executado. Esse tipo de erro n\u00e3o \u00e9 detectado pelo compilador porque um compilador n\u00e3o tem todas as informa\u00e7\u00f5es necess\u00e1rias para detectar o erro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java \u00e9 uma linguagem altamente tipada e tem robustez na verifica\u00e7\u00e3o dos tipos das vari\u00e1veis durante a execu\u00e7\u00e3o. Java tem mecanismos excelentes para manipular os erros durante a execu\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando um runtime error acontece no programa Java, a JVM lan\u00e7a uma exce\u00e7\u00e3o, a qual o programa pode capturar essa exce\u00e7\u00e3o e trat\u00e1-la. Por exemplo, dividir um n\u00famero por zero (ex: 17\/0) ir\u00e1 gerar um runtime error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java evita runtime errors cr\u00edticos, tais como estouro de mem\u00f3ria e <a href=\"https:\/\/www.devmedia.com.br\/memory-leak-eliminando-vazamentos-de-memoria-em-java\/28349\" target=\"_blank\" rel=\"noreferrer noopener\">vazamentos de mem\u00f3ria<\/a>, ele tem um mecanismo interno para aloca\u00e7\u00e3o e desaloca\u00e7\u00e3o autom\u00e1tica de mem\u00f3ria. O recurso que desaloca a mem\u00f3ria \u00e9 chamada de garbage collection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Logic errors s\u00e3o os erros mais cr\u00edticos de um programa e s\u00e3o dif\u00edceis de achar. Eles s\u00e3o introduzidos por um programador que implementou alguma funcionalidade incorretamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse tipo de erro n\u00e3o pode ser detectado pelo o compilador Java ou na sua execu\u00e7\u00e3o. Esses erros s\u00e3o detectados por aplica\u00e7\u00f5es testadoras ou usu\u00e1rios que compara o estado atual da aplica\u00e7\u00e3o \u00e9 diferente do que eles esperavam. Algumas vezes, alguns erros l\u00f3gicos podem acontecer e nem serem notados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um erro de programa\u00e7\u00e3o \u00e9 conhecido com bug. O processo de encontrar e consertar bugs \u00e9 conhecido como debugging. Todos os IDES modernos como o NetBeans, Eclipse, JDeveloper e IntelliJ IDEA fornece aos programadores uma ferramenta chamada debugger, a qual executa o programa passo a passo para conseguir achar o bug.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Debugging \u00e9 uma atividade rotineira para os programadores. Se voc\u00ea quer ser um bom programador, voc\u00ea precisa aprender a utilizar os debuggers que acompanham as ferramentas de desenvolvimento que s\u00e3o utilizadas para desenvolver em Java.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video_embed clearfix\"><div class=\"video_embed clearfix\"><iframe loading=\"lazy\" title=\"Aula 1: Hist\u00f3ria do Java\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/-npGsTz8aAg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que \u00e9 Java? Java \u00e9 uma linguagem de programa\u00e7\u00e3o de uso geral. Tem como recursos o suporte da programa\u00e7\u00e3o baseado na orienta\u00e7\u00e3o a objeto, procedural e paradigmas funcionais. Muitas vezes pode-se ler a frase \u201cJava \u00e9 uma linguagem de programa\u00e7\u00e3o orientada a objetos\u201d. Isto significa que a linguagem Java tem recursos que suportam o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":799,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-798","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=798"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/798\/revisions"}],"predecessor-version":[{"id":800,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/798\/revisions\/800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/799"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}