sábado, 24 de octubre de 2020

Guía de iniciación al desarrollo full stack (parte 2/Backend)

 En Backend, hoy en día, tenemos los servidores de aplicaciones que reciben todas las peticiones desde el lado cliente (frontend), realizan las gestiones oportunas, hacen las consultas a las BBDD y devuelven la información al cliene, por ponerlo de manera muy simple. Para conseguir desarrollar las aplicaciones que hacen todo lo anterior podemos utilizar lenguajes de programación como Java, C# y Phyton. Me encanta C#, pero me he especializado en Java, así que explicaré la parte de Backend utilizando este lenguaje. Eso sí, aviso que el mundo de Java es infinito y no termina nunca. Siempre aparecen nuevos frameworks que aprender, nuevas formas de trabajar, nuevas tecnologías, etc. Por ejemplo, pongamos que queréis dedicaros a esto (en la parte de Backend) y decidís empezar con Java. Esto sería lo que tendríais que aprender:

-Java SE. Esto es el lenguaje Java puro y duro. Aquí aprendes a programar de forma estructurada y orientada a objetos: sentencias de control, objetos, herencia, polimorfismo, colecciones, genéricos, programación funcional, etc. No os asustéis por estos términos, ya que los iréis aprendiendo uno por uno y con muchos ejercicios.

Nota: ya hace un tiempo que las aplicaciones de escritorio no se llevan mucho, así que si tenéis prisa por aprender podéis saltar la parte de interfaces gráficas: AWT, Swing, Java FX. Personalmente, creo que se debe aprender todo y creando estas aplicaciones se aprende sobre el patrón MVC, pero esto también se enseña en Java EE.

-Java EE. Aquí es cuando aplicas lo aprendido con Java SE para empezar a programar aplicaciones web. Básicamente, esto es lo más importante. Lo anterior es como un entremés para poder empezar esto (como decía, es muy denso). Aquí aprenderéis a trabajar con tecnologías como JDBC, JSP (Java server pages) y Servlets, patrón de diseño MVC, EJB, JPA (Java persistence api), Java Server Faces, patrón de diseño DAO, Web Services, etc.

-Frameworks. Los frameworks externos a Java implican nuevas formas de trabajo y facilitan de una manera enorme el trabajo a la hora de programar. Algunos de estos frameworks son Spring, Struts, Hibernate, Vaadin, etc.

Ahora mismo, el mejor tutorial que puedo recomendaros que toque todo esto es

Universidad Java de Udemy

https://www.udemy.com/course/universidad-java-especialista-en-java-desde-cero-a-master/

Lo he cursado entero y es uno de los mejores. Si bien es cierto que el profesor respondía a todo al principio, a partir de un momento dejó de hacerlo. De todos modos, los compañeros también ayudan y no paran de añadir contenido, así que está muy bien. Además, incluye HTML5, CSS, Bootstrap, Angular, etc. Siempre se puede adquirir de oferta por 10-12€ y es una de las mejores inversiones.

Otros de los cursos que merecen la pena, y mucho, son los de píldoras informáticas:

Java SE

https://www.pildorasinformaticas.es/course-cat/java_se/

Java EE

https://www.pildorasinformaticas.es/course-cat/java-ee/

Curso Spring

https://www.pildorasinformaticas.es/course/curso-spring/

Consejos: en la mayoría de ofertas de trabajo piden haber trabajado con JSP o Spring. Lógicamente, si trabajas con JSP debes haber trabajado con Servlets. Si has aprendido a trabajar con Servlets no te costará nada aprender Spring MVC. Llegados a este punto, es importante que aclare qué es Spring. Es un framework enorme con una cantidad de características abrumadora:

-Spring Boot, Spring MVC, Spring Cloud, Spring Security, Spring Batch, etc.

Lleva un tiempo aprender a usarlo, pero es muy importante hacerlo. Hoy en día no paran de pedir programadores java con conocimientos en Microservicios, contenedores y Amazon Web Services. Todo esto se trabaja con Spring. Por suerte, si has estudiado Java con los VT que he aconsejado antes, verás que Spring reduce el esfuerzo del programador al mínimo. El framework lo hace casi todo él solito. La verdad es que es algo increíble.

Para trabajar con bases de datos se suele utilizar JPA (oficial de Java) o Hibernate (muy parecido a JPA). Una vez aprendes el primero no es nada difícil hacerse con el segundo. Hay muchas más ofertas de trabajo pidiendo Hibernate, pero siempre encuentras alguna con JPA. Ambos utilizan una API llamada Criteria para las búsquedas de datos complejas (por ejemplo, peticiones con muchos campos: nombre, apellido, año, curso, dirección, etc. o búsquedas de datos con muchos filtros).

En resumen, aprendes Java SE para poder aprender Java EE, pero esto no es suficiente así que aprendes Spring e Hibernate (que resulta más fácil porque ya sabes lo anterior). Como decía, infinito xD.

En microservicios aprenderás a implementar todo lo aprendido anteriormente, pero dividiendo la aplicación en partes pequeñas (microservicios) y distribuyendo éstas en distintos servidores. Aquí es cuando entran los contenedores (docker, kubernetes).

Amazon web services no deja de ser más de lo mismo, sólo que en lugar de tener tú las máquinas en la oficina, es Amazon quien las hospeda. Por explicarlo de forma muy simple, Amazon web services te permite crear copias de máquinas con el software necesario de forma muy rápida y cómoda. En nuestro caso instalaríamos servidores de aplicaciones o de bases de datos en cada máquina. Cada servidor tendría un parte pequeña (microservicio) que se comunica con las otras. Cada microservicio puede acceder a la base de datos que quiera (una puede utilizar MySQL, otra MongoDB, PostgreSQL, etc). Del mismo modo, cada microservicio puede estar programado en Java, C#, Phyton, etc. y se comunican entre sí utilizando tecnologías estándar (como se ha usado siempre XML o JSON).

Si te gusta programar el mundo de Java es maravilloso, pero llegar a aprenderlo casi todo (fijaros que no he profundizado en el framework Struts o Vaadin) lleva mucho tiempo y picar código continuamente.

No hay comentarios:

Publicar un comentario