JavaRush /Blog Java /Random-ES /Java. Plan de ACCION

Java. Plan de ACCION

Publicado en el grupo Random-ES
Java.  Plan de acción - 1

Contenido:

  1. Sección cero: núcleo de Java
  2. Herramientas
  3. API JDK
  4. Novedades de Java 8
  5. SQL, bases de datos, JDBC
  6. Marcos
  7. Bibliotecas y marcos para pruebas.
  8. Bibliotecas de servicios
  9. Clientes API
  10. Patrones de diseño
  11. Conocimiento adicional
¿Qué debe saber un potencial Java Junior para conseguir un primer trabajo o al menos postularse para un puesto de Trainee en una buena empresa? ¿Qué herramientas ayudarán a un programador de Java a alcanzar el siguiente nivel? ¿Qué tecnologías estudiar y cuáles dejar para más adelante? No existe una respuesta estándar a estas preguntas, como tampoco existe un plan de acción único que se adapte absolutamente a todos. Algunas empresas se esfuerzan por desarrollarse, introduciendo constantemente nuevas tecnologías y probando las capacidades de nuevas versiones del lenguaje, mientras que otras se aferran obstinadamente a las antiguas. También hay opciones "intermedias" y, quizás, haya más. Sin embargo, hemos elaborado una hoja de ruta o hoja de ruta para un aspirante a desarrollador de Java. En un esfuerzo por hacerlo lo más simple posible, hemos indicado solo aquellas tecnologías y temas que son necesarios para la gran mayoría de los "javistes". Cabe recordar que no es necesario estudiar todo en detalle (algunos de los anteriores solo se pueden dominar trabajando en equipo), pero no estará de más tener una comprensión general de ellos.

0. Sección cero: núcleo de Java

Insertamos la sección cero en el artículo por si acaso, en caso de que venga aquí una persona que recién está planeando aprender Java y no sabe por dónde empezar. Java Core es algo que incluso un principiante debería conocer muy bien. Es decir, saber cosas básicas, entender lo que ofrece el lenguaje para resolver un problema en particular, y en casos sencillos poder aplicar estos conocimientos. Puedes practicar Java Core en JavaRush y, si aún no lo has hecho, ¡te invitamos a realizar el curso ! Bueno, para todos los demás, recordemos los principales hitos de Java Core:
  • Construcciones, operadores y tipos de datos básicos de Java
  • POO y su implementación en Java
  • Excepciones
  • Colecciones Java
  • Genéricos
  • subprocesos múltiples

1. Herramientas

IDE o entorno de desarrollo integrado

La principal herramienta de un desarrollador moderno es un IDE. Hay muchos de ellos en el mercado hoy en día, pero en el desarrollo profesional de Java normalmente solo hay dos nombres. Este es el Eclipse gratuito, basado en complementos , que ha mantenido la palma durante muchos años seguidos, e IntelliJ IDEA , que ha estado desplazando activamente a Eclipse en los últimos años, y esto a pesar de que una suscripción a la versión Ultimate es necesaria para Los profesionales cuestan dinero. Te recordamos que en el curso JavaRush utilizamos la edición gratuita de Community IntelliJ IDEA, que tiene ciertas limitaciones funcionales en comparación con Ultimate. La frase "Conozco el IDE" significa que está familiarizado con las capacidades básicas del entorno de desarrollo, sabe cómo compilar, ejecutar, depurar y probar archivos, y refactorizar código. Dominar las teclas de acceso rápido será de gran ayuda para acelerar su trabajo. No seas perezoso, dedica unas horas a aprender sobre las funciones del IDE que no conocías y empieza a utilizarlas en la práctica. Y no descuides la depuración, es una habilidad muy útil. Todas estas acciones ayudarán a mejorar significativamente la velocidad y calidad de su trabajo.

Herramientas para montaje automático.

Hoy en día, los proyectos Java utilizan con mayor frecuencia herramientas como Maven y Gradle. No es necesario estudiarlos a fondo, pero será útil comprender en qué se diferencian entre sí, en qué se basan, qué tareas son (en Gradle) y fases con objetivos en Maven. Bastará con leer sobre los sistemas e implementar en ellos un par de pequeños proyectos. Esto es bastante sencillo de hacer y comprenderá los detalles en condiciones de trabajo reales.

Sistemas de control de versiones y servicios de hosting online.

Un sistema de control de versiones es lo que ayuda a los programadores a trabajar en equipo en un proyecto común sin "romperlo", sincronizar fragmentos de código dispares creados por diferentes personas, revertir actualizaciones fallidas y agregar otras nuevas. Los más comunes son dos sistemas de control de versiones. Uno de ellos es distribuido y se llama Git, el segundo es centralizado y se llama SVN (también conocido como Subversion). Hoy en día, Git es el estándar de facto. Trabajar con este sistema es más cómodo y sencillo, es compatible con todos los IDE (así como con SVN). Trabajar con Git se puede probar de forma rápida y sencilla; afortunadamente, hay mucha información sobre este tema en Internet. Por ejemplo, el libro de texto interactivo GitHowTo, disponible en ruso (se actualiza muy rápidamente). Es muy importante que un desarrollador novato domine los servicios de alojamiento en línea para sistemas de control de versiones. La mayoría de las veces se basan en Git y se denominan plataformas Git (aunque algunas de ellas pueden funcionar con diferentes sistemas de control de versiones). El más popular de ellos es GitHub. BitBucket y GitLab también son bastante comunes. Estos sistemas le ayudan a almacenar y recuperar código, y también a hacer lo que Git puede hacer, sólo que no a través de la línea de comandos, sino a través de la interfaz. GitHub también le permite verificar el código y ofrecer soluciones a problemas directamente en el sitio. Allí también puedes encontrar el proyecto de código abierto de otra persona e intentar ofrecer tus propias soluciones para mejorarlo. Básicamente, GitHub es una especie de red social para desarrolladores. Entonces, si aún no lo ha hecho, asegúrese de crear una cuenta en GitHub y alojar sus proyectos allí. Lee también sobre GitLab y BitBucket, y si tienes tiempo puedes probarlos, tienen versiones gratuitas. Por cierto, todas estas plataformas están completamente integradas con los IDE modernos. Java.  Plan de acción - 2

2. API JDK

Esta sección destaca las API de JDK que un desarrollador de Java moderno necesita conocer con bastante confianza. No estaría de más que un programador examinara el código fuente de estas bibliotecas de vez en cuando, navegara por ellas y comprendiera cuándo es necesario utilizarlas y por qué. Efecto secundario: si conoce bien estas API, probablemente le resultará mucho más fácil realizar su entrevista.

Marco de colecciones de Java

Java Collection Framework es una de las API más importantes del lenguaje Java y todo desarrollador debería conocerla. Representa una jerarquía de interfaces e implementaciones de estructuras de datos estándar en Java, como lista, lista vinculada, conjunto, pila, cola, tabla hash y muchas otras. El desarrollador debe tener un buen conocimiento de las clases ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet y otras, y conocer sus propiedades. En particular, necesita comprender los costos de tiempo y memoria de una colección particular para operaciones estándar (indexar, buscar, insertar, eliminar) y, en base a esto, aplicarlos correctamente en sus proyectos. Las colecciones en Java están muy bien implementadas, pero si es necesario, el desarrollador puede ofrecer su propia implementación. Un programador que conozca bien las colecciones puede ampliar o redefinir la lógica en clases ya escritas, o implementar todo desde cero.

API de simultaneidad de Java

Java se diseñó originalmente para admitir programación paralela y, desde la versión 5.0, el lenguaje incluye API de alto nivel para subprocesos paralelos. Por lo tanto, un desarrollador de Java competente simplemente debe tener un buen conocimiento de subprocesos múltiples y comprender las principales API de los paquetes java.util.concurrent.* . Como mínimo, necesita saber y comprender claramente qué son Thread, Runnable, bloqueo de objetos y sincronización. Asegúrate de comprender los conceptos de punto muerto, bloqueo en vivo, condiciones de carrera y qué hacer con todo ello. Para sentirse seguro, aprenda los sincronizadores de java.util.concurrent.*, como Semaphore, CyclicBarrier, CountDownLatch, Phaser, Exchanger<V>, CompleteableFuture, etc. Y también las interfaces Callable y Future.

API de E/S de Java

Los desarrolladores novatos a menudo ignoran el estudio en profundidad de Java I/O y Java Non-blocking I/O . Pero es en vano: estas API de Java facilitan el trabajo con subprocesos y se utilizan habitualmente en aplicaciones reales. Especialmente clases como File, InputStream, OutputStream, Reader y Writer del paquete java.io, que es el núcleo de la API de Java IO. Java Non-blocking I/O (java.nio) es una colección de interfaces de programación de aplicaciones diseñadas para implementar operaciones de E/S de alto rendimiento. Estos incluyen, en particular, ByteBuffer, FileChannel y Selector, entre otros. Tómese la molestia de comprender estas API, no se arrepentirá.

Objeto de clase de dispositivo

Una vez que entiendes la superclase de Objetos, en cierto sentido te conviertes en un “hablante nativo de Java”, mucho más consciente de la estructura de programación orientada a objetos y de muchos procesos. La clase java.lang.Object se encuentra en la parte superior de la jerarquía de clases. Además de una mejor comprensión de lo que está sucediendo, conocer los métodos de la clase hará que la entrevista sea mucho más fácil; a los entrevistadores les encanta probar a los candidatos con la clase Objeto y sus objetos.

3. Nuevas funciones en Java 8

A pesar de que ha pasado tiempo desde el lanzamiento de Java 8 y ya han aparecido otras actualizaciones numeradas, fue la octava versión la que se volvió icónica. Introdujo importantes innovaciones que simplifican, y en cierto sentido cambian, los enfoques de programación en Java. Debe comprender cómo utilizar expresiones lambda, así como la API Stream en Java 8 y las nuevas API de fecha y hora.

4.SQL, bases de datos, JDBC

Son pocos los desarrolladores de Java que no encuentran consultas SQL y bases de datos en su trabajo. Por lo tanto, es importante comprender qué son las bases de datos SQL y relacionales, cómo funcionan y poder escribir consultas simples para unir dos tablas. Para la formación, puede intentar trabajar con uno de los DBMS, por ejemplo, PostgreSQL o MySQL . También sería bueno adquirir conocimientos básicos de bases de datos no relacionales, enfoques noSQL y una familiaridad superficial con el DBMS orientado a documentos MongoDB . Para trabajar con bases de datos en Java puro, puede utilizar el estándar JDBC junto con la API del mismo nombre. Se implementa como el paquete java.sql, que se incluye en el JDK. Hoy en día rara vez se utiliza en su forma pura, pero a menudo se puede encontrar en aplicaciones de soporte más antiguas, y las herramientas más modernas y generalmente aceptadas suelen basarse en este estándar.

5. Marcos

Entre los requisitos para un desarrollador Java Junior hoy en día se puede encontrar cada vez más “conocimientos de Spring, Hibernate, Spring Boot”. Aprender estas tecnologías por tu cuenta es una tarea muy difícil, pero sin embargo es posible, especialmente a nivel superficial. Una comprensión más profunda llegará a medida que trabaje. Entonces.

Marco de primavera

Casi todas las aplicaciones creadas en Java hoy en día utilizan Spring Framework. Este poderoso marco proporciona un sistema de coordenadas específico, la columna vertebral con la que se construye la aplicación. Una aplicación Spring es mucho más fácil de probar y mantener. Y todo gracias a la inyección de dependencia.

Hibernar

Otro marco más importante para los desarrolladores de Java es Hibernate. Implementa la especificación JPA (Java Persistence API), que resuelve problemas de mapeo relacional de objetos (ORM). La mayoría de las aplicaciones Java interactúan con bases de datos y, si hablamos de bases de datos relacionales, trabajar con ellas sin Hibernate es un inconveniente. Este marco proporciona a los desarrolladores una serie de características importantes, en particular, almacenamiento en caché y transacciones listas para usar, lo que a su vez les permite centrar sus esfuerzos en desarrollar la lógica de la aplicación y libera al programador de muchas tareas de bajo nivel cuando trabaja con bases de datos relacionales. . Esto mejora significativamente la productividad de los desarrolladores.

MVC de primavera

Este marco garantiza el desarrollo de aplicaciones de acuerdo con el patrón Modelo - Vista - Controlador, utilizando componentes listos para usar débilmente acoplados. Estudie este patrón (los patrones de diseño se analizan a continuación) y la lógica de Spring MVC. En la práctica se utiliza con bastante frecuencia.

Bota de primavera

Con la habilidad adecuada, Spring facilita la creación de una aplicación Java. A su vez, Spring Boot facilita la creación de una aplicación Java basada en Spring. Spring Boot le permite crear fácilmente aplicaciones Enterprise Spring completas que se pueden iniciar con un esfuerzo mínimo: la configuración automática elimina la mayoría de las molestias asociadas con la configuración de aplicaciones Spring.

6. Bibliotecas y marcos para pruebas.

Algunos futuros desarrolladores están seguros de que probar el código no es asunto suyo en absoluto, sino de personas especiales llamadas testers. En la práctica, esto no es del todo así. Las pruebas, especialmente las pruebas unitarias (más comúnmente llamadas pruebas unitarias), son una habilidad muy importante para todo programador. Además, a los recién llegados que acaban de comenzar sus funciones a menudo se les asigna la tarea de cubrir el código de alguien con pruebas unitarias. Por lo tanto, recomendamos encarecidamente aprender la biblioteca JUnit y desarrollar el hábito de escribir pruebas unitarias para su código. Consulte también el marco Mockito, que se puede utilizar con JUnit para crear clases de dependencia simuladas.

7. Bibliotecas de servicios

Java tiene una gran cantidad de bibliotecas de servicios que ayudan a resolver casi cualquier problema al que se enfrenta un desarrollador. Es imposible estudiarlos todos y no tiene ningún sentido hacerlo. Pero navegar a través de ellos es una gran idea. Aquí destacaremos sólo algunos de los que se utilizan con mayor frecuencia en la práctica.

Bibliotecas para iniciar sesión

En primer lugar, podemos mencionar log4j y Slf4j . Estas bibliotecas están diseñadas para ocultar la implementación de operaciones de registro de rutina que ocurren mientras se ejecutan aplicaciones Java.

Bibliotecas para JSON

JSON, el formato para transferir información del cliente al servidor, es el formato más utilizado en la actualidad. Hay varias bibliotecas buenas que funcionan con JSON, siendo las más populares Jackson y google-gson .

Google guayaba

Guava es un proyecto con bibliotecas centrales de Java desarrollado por Google. Aquí puede encontrar nuevos tipos de colecciones (multimapa, multiconjunto y otras), colecciones inmutables, gráficos, funcionales, utilidades para paralelismo, E/S, hash, procesamiento de cadenas y mucho más.

Apache común

Commons es un proyecto enorme que contiene muchas utilidades Java útiles para diversos fines. Por lo tanto, las bibliotecas Apache Commons son la base de Tomcat, Hibernate y varios otros grandes proyectos. Hay muchas bibliotecas en Apache Commons. Mencionemos Commons IO, que simplifica las operaciones de E/S, Commons CSV para trabajar con archivos csv, Commons Math para trabajar con operaciones y cálculos matemáticos y estadísticos complejos, Commons CLI para analizar argumentos de línea de comandos.

8. Clientes API

REST es un estilo de nomenclatura para puntos finales para acceder a recursos a través de la red en un formato legible por humanos. Es mejor para un desarrollador Java moderno comprender la ideología REST y también conocer Spring RestTemplate , una biblioteca muy útil para crear un cliente REST.

9. Patrones de diseño

Si un desarrollador novato está familiarizado con los patrones de diseño, es decir, las reglas de buenos modales en la programación Java, e incluso sabe cómo aplicarlos en la práctica, instantáneamente aumentará su valor en el mercado laboral. Los principiantes suelen subestimar los patrones porque rara vez crean aplicaciones complejas mientras estudian. Sin embargo, si los patrones no se aplican a proyectos serios, mantener y adaptar el código se convierte en una tarea extremadamente difícil. Así que no seas perezoso, estudia los patrones y aplícalos en tus proyectos personales. Su futuro empleador se lo agradecerá mucho.

10. Conocimientos adicionales

Algoritmos y estructuras de datos.

“Algoritmos y estructuras de datos” es el nombre de un curso completo que se imparte en universidades técnicas. Revela la base teórica para la construcción de diversas estructuras de datos. Y en clases prácticas aprenden a trabajar con ellos: recopilando y recuperando datos, buscándolos y clasificándolos. En realidad, "Algoritmos" en esta frase significa exactamente ordenar y buscar. A lo largo de los años, los informáticos han desarrollado muchos algoritmos. Algunos de ellos son de carácter educativo, ya que a pesar de la relativa facilidad de implementación, su funcionamiento no es muy eficaz. Por ejemplo, funcionan lentamente, lo que puede notarse en grandes grupos de datos. O consumen mucha memoria. Otros algoritmos han demostrado ser muy eficaces. Tanto es así que han sido incluidos en las bibliotecas oficiales de la mayoría de lenguajes de programación. En consecuencia, hoy en día no es necesario desarrollar tales algoritmos usted mismo. Basta saber dónde están. Y, sin embargo, los desarrolladores más experimentados recomiendan que los principiantes asistan a una “escuela de algoritmos” y los implementen por su cuenta mientras estudian. Esto desarrolla el pensamiento del programador. También ayuda con las entrevistas; les gusta mucho plantear problemas de clasificación y búsqueda.

servlets

Un servlet es una forma de manejar una solicitud de usuario. Hoy en día no se utilizan en todas partes ni siempre, pero será útil tener una idea sobre ellos.

HTML y CSS

Todo el mundo debería conocer los conceptos básicos del diseño. Este conocimiento es bastante fácil de obtener, y si aún no lo has hecho, dedica un par de días a esta actividad. Al mismo tiempo, te tomarás un descanso de temas más complejos.

XML

El lenguaje de marcado extensible solía ser omnipresente en el desarrollo de Java. Está siendo reemplazado gradualmente por JSON, pero XML todavía se usa hoy en día. No es difícil de aprender, por lo que puedes prestarle un poco de atención a este idioma.

javascript

Las encuestas a desarrolladores muestran que incluso aquellos que no tienen absolutamente nada que ver con el desarrollo front-end escribieron scripts en JavaScript de vez en cuando. Conocer los conceptos básicos de este idioma puede considerarse una regla de buenos modales, así que no seas perezoso, lee sobre ello y crea una docena o dos de guiones. No será redundante.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION