<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: EddieSCJ</title>
    <description>The latest articles on DEV Community by EddieSCJ (@eddiescj).</description>
    <link>https://dev.to/eddiescj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F339861%2F286f3cb0-18e9-4733-a7c1-a4e9540cb675.jpeg</url>
      <title>DEV Community: EddieSCJ</title>
      <link>https://dev.to/eddiescj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eddiescj"/>
    <language>en</language>
    <item>
      <title>How to implement JWT authentication in Java with Spring Framework</title>
      <dc:creator>EddieSCJ</dc:creator>
      <pubDate>Sat, 13 Feb 2021 22:23:44 +0000</pubDate>
      <link>https://dev.to/eddiescj/how-to-implement-basic-authentication-in-java-with-spring-framework-2lh8</link>
      <guid>https://dev.to/eddiescj/how-to-implement-basic-authentication-in-java-with-spring-framework-2lh8</guid>
      <description>&lt;h3&gt;
  
  
  First of all, let's import some dependencies
&lt;/h3&gt;

&lt;p&gt;Before starting the real implementation, please, try to get these dependencies on your project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
    compile group: 'com.auth0', name: 'java-jwt', version: '3.10.3'
    compile group: 'org.springframework.security', name: 'spring-security-core', version: '5.1.5.RELEASE'
    compile group: 'org.springframework.security', name: 'spring-security-web', version: '5.1.5.RELEASE'
    compile group: 'org.springframework.security', name: 'spring-security-config', version: '5.1.5.RELEASE'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You might have the basic packages to build an API like Spring Starter Web, if you don't know how to build an API with java and Spring Boot, please, read the following article: &lt;a href=""&gt;Building a Simple API with Java and Spring Boot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And make sure you already have your UserRepository Implemented, but if you don't know how to implement a simple connection between java and any SQL database with H2, please, read the following article: &lt;a href=""&gt;Implementing a Simple Database with Java, JPA, Hibernate and SQL&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating a Bean to our PasswordEncoder
&lt;/h3&gt;

&lt;p&gt;If you don't know what is a Bean, please, read the following article: &lt;a href=""&gt;What is a Java @Bean?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please, at your main class, paste the following code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Bean public BCryptPasswordEncoder bCryptPasswordEncoder() {
    return new BCryptPasswordEncoder(); 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It'll provide a BCryptPasswordEncoder instance to us.&lt;/p&gt;
&lt;h3&gt;
  
  
  Implemeneting our own UserDetailsService
&lt;/h3&gt;

&lt;p&gt;So, assuming that we'll authenticate with a username and password, we have to implement the default class and method to search it in the database, right? &lt;/p&gt;

&lt;p&gt;Follow bellow the code, please, stay alert to read the comments.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's implement the JWTAuthenticationFilter
&lt;/h3&gt;

&lt;p&gt;First of all, our authentication will be a basic auth, where you provide a username and password and the system will verify if you are who you are supposed to be.&lt;/p&gt;

&lt;p&gt;This class will rewrite some methods in a personal way to implement our UsernameAndPasswordAuthenticationFilter, which provides somethings like the answer to our auth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Remember to be alert for the comments.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Follow below the code:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;That is our AuthenticationFilter, responsible to verify the username and password data (we can say that it is the class that execute the "login")&lt;/p&gt;

&lt;h3&gt;
  
  
  Lets Implement the JWTAuthorizationFilter
&lt;/h3&gt;

&lt;p&gt;If the Authentication Filter verifies and confirms the data, our Authorization Filter is responsible for the request, just like verify our token and show the authorities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Remember to be alert for the comments.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Follow Below the file:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Finally, the WebSecurity Class
&lt;/h3&gt;

&lt;p&gt;This is the class that interacts with the web layer, here we also have the cors configuration, allows, signup redirect, we define the login endpoint, etc etc etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Remember to be alert for the comments.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Follow below de the file: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;We can just finish here, but, as a bonus, there is a test class to test your login functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  #Bonus - Test Impl
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;THANK YOU!!! ENJOY THE ARTICLE &amp;lt;3, LEAVE YOUR LIKE HERE SWEET!!&lt;/p&gt;

</description>
      <category>springsecurity</category>
      <category>springframework</category>
      <category>jwt</category>
      <category>java</category>
    </item>
    <item>
      <title>Por que aprender Java?</title>
      <dc:creator>EddieSCJ</dc:creator>
      <pubDate>Tue, 07 Apr 2020 09:20:49 +0000</pubDate>
      <link>https://dev.to/eddiescj/por-que-aprender-java-2l5a</link>
      <guid>https://dev.to/eddiescj/por-que-aprender-java-2l5a</guid>
      <description>&lt;p&gt;Estamos de volta meus queridos leitores para mais um artigo sobre o java pra iniciantes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Java é multiplataforma
&lt;/h3&gt;

&lt;p&gt;Bom, como vocês já sabem, java é multiplataforma, esse é o principal e indiscutível ponto de vantagem do java. Caso queira saber como o java consegue ser multiplataforma, leia o primeiro post da série.&lt;/p&gt;

&lt;h3&gt;
  
  
  Java é a personificação da Orientação a Objetos (Isso o torna ótimo para aprender O.O.)
&lt;/h3&gt;

&lt;p&gt;Bom, provavelmente vocês ainda não sabem o que é isso, mas a orientação a objetos ou POO (vamos tratar disso mais a fundo mais à frente) é um paradigma famosíssimo e fortemente difundido no mundo da programação. Além de tudo, POO facilita bastante a reutilização de código (em termos leigos, dizer mais e falar menos), o que por ventura é requisito para uma boa codificação.&lt;/p&gt;

&lt;p&gt;Tendo em vista estes dados, por que o Java é a personificação da orientação à objetos? Bom, tudo no java, desde um simples;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           System.out.println("Hello World");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;à um &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           System.out.println(Double.parseDouble("20.0"));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Todas os códigos com notações ponto que você viu fazem referência à uma classe padrão do Java que importa um método, seja ele de saída de dados ou de transformação de um literal em um número de ponto flutuante (Type casting). Ou seja, o que melhor para aprender Orientação à Objeto que algo feito interiamente com isso?&lt;/p&gt;

&lt;h3&gt;
  
  
  Java é ótimo para construir APIs Rest
&lt;/h3&gt;

&lt;p&gt;Você deve estar pensando em como aquele negócio verboso e feio pode ser bom para se comunicar com a WEB. SUPRESA!!! Graças ao Spring Framework a construção de APIs Rest tornou-se uma coisa extremamente fácil, versátil e limpa.&lt;/p&gt;

&lt;p&gt;Algo útil e muito bom para desenvolver é decidir usar Hibernate ORM (Object Relational Mapping) com JPA (Java Persistence API) para construção e manipulação do seu Banco de dados. ORM é uma técnica sensacional onde você consegue manipular e criar seus dados à partir da sua estrutura de objetos :D, ou seja, todo o tempo que você gastaria traduzindo SQL para JAVA e vice versa pode ser aproveitado em novas features.&lt;/p&gt;

&lt;h3&gt;
  
  
  É uma boa linguagem para iniciantes aprenderem lógica de programação
&lt;/h3&gt;

&lt;p&gt;O fato do java ser uma linguagem fortemente tipada e ter um compilador que te avisa dos possíveis erros e dos erros em tempo de execução (Runtime Errors) ajuda bastante na hora de aprender à programar, afinal, é comum que todo iniciante cometa bastante erros. Com um compilador forte e equiparado você vai ser obrigado a seguir um conjunto de regras para poder elaborar um código que funcione bem, logo, com o tempo estas regras vão se fixar e você vai ter base para construir um bom código em qualquer linguagem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Java tem um mercado abrangente e forte mesmo nos dias de hoje
&lt;/h3&gt;

&lt;p&gt;Até entre aqueles que hateiam fortemente o java é comum ouvir dizer que "se você programa Java, dificilmente ficará sem emprego." Isso ocorre devido ao grande pico de uso do java dos anos 1990 até 2000, muitos dos sistemas construídos no mundo ainda hoje rodam em cima da linguagem &lt;strong&gt;Java&lt;/strong&gt; e por isso, muitos necessitam manutenções e implementação de novas features sem a opção de refazer todo o sistema em outra tecnologia, afinal, em time que está ganhando não se mexe.&lt;/p&gt;

&lt;p&gt;Além de tudo apresentado, o Java é tem um forte potencial na construção backend de aplicações distribuídas e que necessitam de uma alta segurança.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Obrigado pela atenção jovens padawans, os próximos posts irão tratar do tão esperado COMO COMEÇAR A PROGRAMAR JAVA e TIPOS DE DADOS EM JAVA&lt;/strong&gt; &lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>javatutorial</category>
    </item>
    <item>
      <title>Qual a grande história por trás do Java?</title>
      <dc:creator>EddieSCJ</dc:creator>
      <pubDate>Thu, 02 Apr 2020 04:50:38 +0000</pubDate>
      <link>https://dev.to/eddiescj/de-onde-veio-o-java-1gnj</link>
      <guid>https://dev.to/eddiescj/de-onde-veio-o-java-1gnj</guid>
      <description>&lt;p&gt;Bom, se você está lendo isso quer dizer que você é um iniciante Java e está procurando informações antes de cair de cabeça no mundo Java. Parabéns jovem gafanhoto, esse é um ótimo primeiro passo.&lt;/p&gt;

&lt;p&gt;Então, diante de um mundo tão repleto de linguagens e tecnologias conhecidas atualmente, por que, afinal aprender a programar em Java?&lt;/p&gt;

&lt;p&gt;Bom, antes de citarmos todas as vantagens e desvantagens da linguagem é importante que você saiba como ela surgiu e qual o seu propósito, o que afinal ela resolve como ferramenta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Afinal, como começou?
&lt;/h2&gt;

&lt;p&gt;Bom, toda história começou em meados de 1991 quando um pequeno grupo de pessoas foram escaladas para trabalhar um projeto da Sun Microsystems com a ideia de criar softwares que pudessem ser utilizados em diversas plataformas. Na época em questão trabalhar com sistemas multiplataforma não era algo muito simples, até então não haviam linguagens famosas com essa funcionalidade.&lt;/p&gt;

&lt;p&gt;De acordo com o ranking TIOBE as 3 linguagens mais utilizadas nos anos 90s eram respectivamente C, C++ e Fortran. Apesar do grande mercado que essas linguagens tinham, a velocidade invicta conquistada pelo C e C++ até hoje, estas tecnologias operavam para o sistema operacional em que foram escritos os códigos, ou seja, para que um mesmo código operasse em no MacOS, Windows e Linux era necessário que fossem escritos 3 vezes, uma para cada sistema operacional.&lt;/p&gt;

&lt;p&gt;Vista a dificuldade de implementar qualquer projeto multiplataforma James Gosling junto à sua equipe decidiram que era hora de criar uma nova linguagem, inicialmente ela deveria chamar-se Oak (O grande James Gosling gostaria de batizá-la assim porque observou que na janela do escritório onde costumava programar havia sempre um caravalho, sim, estranho mesmo) e junto à ela foi desenvolvido o GreenOS (Um sistema operacional com uma interface padrão). &lt;/p&gt;

&lt;p&gt;Infelizmente (ou muito felizmente) houveram complicações na hora de consolidar o nome Oak à linguagem, e graças à isso eles haviam de escolher um novo nome, bom, após juntar-se para uma séria reunião James Gosling perguntaria-os qual a coisa que mais os agradava, e como bons meninos de T.I. eles responderiam "Java Coffee", e assim consolidou-se o nome "Java" para a linguagem de programação que viria a ser uma das mais conhecidas em todo o mundo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como o Java consegue ser multiplataforma e algumas outras linguagens não?
&lt;/h2&gt;

&lt;p&gt;Como dito anteriormente, em linguagens como C e C++ o código escrito é compilado para determinada máquina, assim, irá funcionar somente naquele sistema operacional e à medida que precisar mudar de SO é necessário rever as bibliotecas necessárias para o sistema e recompilar.&lt;/p&gt;

&lt;p&gt;O java não enfrenta este problema, afinal ele o código .java é compilado para bytecode .class que se comunica diretamente com a JVM (Java Virtual Machine) responsável por fazer a limpeza de dados inúteis na memória evirtual com o famoso garbage collector, interpretar o código, gerenciar as pilhas de memória. A JVM é literalmente uma máquina/computador virtual e não, a JVM não entende &lt;strong&gt;CÓDIGO JAVA&lt;/strong&gt; e sim &lt;strong&gt;BYTECODE&lt;/strong&gt; e traduz ele para o código específico de cada máquina, assim ela possibilita que o seu código funcione em diversos dispositivos, para destacar este fato o lema do java ficou conhecido como "Write once, run anywhere".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Obrigado por ler até o final, os próximos posts irão tratar do porquê programar java e como começar a programar, que ferramentas baixar&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>javatutorial</category>
    </item>
  </channel>
</rss>
