JavaRush /Blog Java /Random-ES /Una guía para el futuro desarrollador de Java. Empresa - ...
Diana
Nivel 41

Una guía para el futuro desarrollador de Java. Empresa - parte 1

Publicado en el grupo Random-ES
“No se sienta demasiado orgulloso de estos logros tecnológicos que ha construido. La capacidad de destruir un planeta no es nada comparada con el poder de la Fuerza." - Darth Vader en la Estrella de la Muerte. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 1

Introducción

Probablemente, las dos siguientes partes de la serie de artículos sean las más esperadas por muchos, y con razón. ¿Qué hay más allá del horizonte, más allá del Java puro? ¿Qué respiran los desarrolladores de Java en cada proyecto? Considere esto como una guía de autoaprendizaje completa y real para cualquier ingeniero de back-end promedio cuyo lenguaje de programación principal sea Java. Tengo la intención de cubrir el promedio hospitalario tanto como sea posible y describir no solo los marcos más populares, sino también las soluciones que se consideran relevantes en este momento. Naturalmente, existen muchas herramientas, y comprender cuáles son las más importantes y las mejores es un camino a ninguna parte. Cada uno de ustedes miró la sección "Empleos" en DOU y encontró un montón de tecnologías que se repiten constantemente de una vacante a otra. Entiendo que es imposible describirlo todo, pero está bien idear un marco general, así que intentemos seguir esta dirección. De alguna manera, en el pasado, en uno de los proyectos, ocurrió una vergüenza bastante interesante, que, creo, se repitió y se repite constantemente de vez en cuando para muchos en un área u otra. La tarea se estableció para adjuntar una representación de una página HTML a la funcionalidad terminada simplemente para mostrar el estado de las entidades individuales. Como resultado, mi colega decidió adjuntar Spring thymeleaf, que extrajo parte de las dependencias centrales del propio Spring, cuando nadie usaba Spring. Y todo esto es para una página normal, que simplemente muestra el estado de 2 o 3 entidades. "Nunca he visto mucho sentido en usar dos sables de luz... en mi opinión, es un alarde" - Obi-Wan Kenobi. Por un lado, el desarrollador resolvió el problema lo más rápido posible, instaló un framework con el que tenía experiencia y lo integró en el proyecto en cuestión de horas. Pero, por otro lado, nuestro programa ha crecido en tamaño, por lo que la pregunta simple es: ¿hizo lo correcto? Para este tipo de tareas atómicas, cuando esté seguro de que este MVC de hoja de tomillo/Spring, etc., es más grande. No se usará en ningún lado, es mejor no usarlo en absoluto. Siempre me sorprenden frases como “¡Oh! ¡Sí, usamos Hibernate aquí! ¡Mira, todo está bien, ORM!”, y cuando se les pregunta lógicamente si es posible arreglárselas aquí con JDBC normal, se encogen de hombros. Existe una arquitectura ordinaria, que debe ser sencilla, que debe tratarse con temor, no abarrotada de estructuras modernas y supermodernas. Como decía Obi-Wan más arriba, esto no es más que lucirse, aunque es necesario saber utilizarlos. El joven javaista, en mi opinión, es el más desafortunado de todos: tantas especificaciones, tantas bibliotecas que necesitan ser estudiadas. Solo Java EE tiene documentación por las nubes. Surge la pregunta: ¿qué debería emprender un principiante, qué debería aprender a continuación, qué debería hacer después de Horstmann? Respuesta simple: desafortunadamente, conozco a mucha gente. Y no comenzaremos con los marcos comerciales, sino con cosas necesarias más mundanas.

Sistemas operativos

linux

Además de Windows y/o el acogedor Yosemite, debes acercarte a Linux con una sonrisa. Para algunos proyectos, basta con ser usuario y saber utilizar la línea de comandos, para otros, mucho más. ¿Qué método es mejor? Simplemente hay toneladas de libros/tutoriales en Internet. Comience instalando Ubuntu o cualquier otra distribución que desee e intente usarlo como su sistema operativo principal durante uno o dos meses. Será mucho mejor si comienzas a aprender Java dentro de Linux compilando y manipulando archivos usando la terminal. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 2La línea de comandos de Linux por William Shotts . Lea este libro no como una novela de "50 sombras de Grey", sino como un curso interactivo completo: abra una terminal y repita después del autor. ¿Quieres lo básico y cómo funciona Linux? No tomemos el curso de Ciencias de la Computación y sistemas operativos, eso está en la siguiente parte. Vaya a edx.org y pruebe el sencillo curso de Introducción a Linux . También hay un libro de la serie mencionada anteriormente Cómo funciona Linux: lo que todo superusuario debería saber de Brian Ward . Una publicación bastante ilustrada que presta atención a las redes, los dispositivos y la gestión de recursos. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 3¿Adelante? Hay un libro excelente, que por cierto, lo tengo por aquí... sí (sacude el polvo)... ¡aquí está! Unix y Linux: Guía del administrador del sistema. Evi Nemeth. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 4Un manual bastante extenso y bien traducido. Para ser honesto, personalmente no lo domino, pero me gustaron mucho los conceptos básicos de administración (la primera parte). Naturalmente, no se pueden ignorar los scripts de Shell. Es mejor probar todo esto en la práctica, pero en los libros puede consultar Aprendiendo el bash Shell: programación de Unix Shell de Cameron Newham. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 5Una cantidad tan grande de literatura sobre Linux/Unix no se puede cubrir en su totalidad, especialmente en este artículo, donde Linux está en segundo plano. Mi colega de trabajo, que se comió el perro en este asunto, me aconsejó algo bastante práctico: descargar ArchLinux e intentar ponerlo en funcionamiento. ¡En el proceso aprenderás lo que más no quiero!

ventanas

En los currículums de los programadores hay una columna: "Experiencia en Windows más de 10 años". Por supuesto, te felicito por el hecho de que has estado jugando al contador desde que tenías 10 años en Windows, pero te pido que no te caves un hoyo de antemano en la entrevista, porque en un proyecto en el que estás trabajando estrechamente con IIS, lote/powershell, Dios no lo quiera, el registro, la entrevista no será realmente difícil, y además la sonrisa frente a la persona sentada. Lida también recibirás una dosis de humillación. ¿Necesitas esto? La respuesta se sugiere por sí sola. Deje a un lado su Windows pirateado del torrent e intente instalarlo en algún tipo de máquina virtual de Windows Server. Estúdielo no sólo desde el lado del usuario y la instalación de JAVA_HOME. En este sentido, existe una guía casi completa en forma del libro Mastering Windows Server 2012 R2 de Mark Minasi . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 6Por ejemplo, si usa PowerShell, consulte el excelente libro Windows PowerShell en acción de Manning de Bruce Payette . Entiendo que es imposible leer 1000 páginas, pero al menos puedes conservarlo como referencia. Creo que no se necesita nada más. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 7Como resultado, preste atención a las lagunas en su conocimiento sobre el uso de Windows y busque la información que le interese en Internet.

Herramientas de construcción

experto

¿Qué es lo más importante que hay que entender en Maven? Estos son los primeros pasos y tareas:
  1. Aprende qué hace Maven en cada fase, incluso puedes memorizarlo. Esto supone casi un 80% de éxito y le dará una idea clara.
  2. Cree sus propios proyectos sandbox localmente con un sistema de múltiples módulos, con gestión de dependencias explícita. Intente adjuntar bibliotecas de terceros, intente crear algo usándolas.
  3. Juega con el perfil
  4. Comprenda la administración de complementos y estudie la lista de los complementos más populares en el sitio web oficial.
  5. Explore cómo puede utilizar mejor maven en su proyecto. Por ejemplo, las compilaciones paralelas pueden reducir significativamente el tiempo de compilación.
Para una inmersión rápida, vaya a la versión rusa del sitio web de Apache Maven y busque un par de tutoriales en Google. Aún así, la tercera edición de uno de los libros principales sobre Maven no se publicará. Hasta ahora esta es la segunda edición de Maven: The Definitive Guide de Sonatype . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 8Para el nivel avanzado, es adecuado crear su propio complemento. No te preocupes por qué tipo de complemento necesitas crear, ¡porque ya existen muchos! Intente crear algún tipo de análogo, estudie las fases como dos y dos.

HORMIGA

Esta herramienta parece mucho más sencilla, por lo que no hay mucho que aprender aquí. Todavía hay proyectos en los que ANT es la única herramienta de construcción. Esto es absolutamente normal: ANT ha demostrado ser una herramienta de construcción sencilla y directa en el contexto de la gestión de pequeñas tareas atómicas (tareas ant). Por supuesto, hay muchos complementos aquí, al igual que Maven. Para comenzar con ANT, haga lo siguiente:
  • Intenta manipular archivos y carpetas.
  • Implementar diferentes órdenes para la ejecución de tareas. En base a esto, aprenda las dependencias y la prioridad de las tareas en ANT.
  • Desempaquetar y/o comprimir el archivo. En las tareas, intente jugar con el contenido del archivo, etc.
No es necesario ofrecer una gran cantidad de recursos para aprender ANT. Para una inmersión más o menos profunda, la página oficial de Apache Ant es suficiente. ( ant.apache.org ) y los libros Ant in Action de Steve Loughran . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 9

Gradle

Para mí, Gradle está más cerca de ANT que de Maven, pero se le puede llamar el medio hermano de estos dos tipos. Tiene un ciclo de vida similar al de Maven y la flexibilidad de las mismas tareas que tiene ANT. Bueno, lo más importante es que Gradle no utiliza XML y, además, puedes hacer con él lo que quieras si estás más o menos familiarizado con Groovy. En general, algo bastante sabroso. No tengas miedo de usar Ant/Maven/Gradle en el contexto de tu IDE. Estas herramientas están estrechamente integradas en Eclipse/IDEA y usarlas en el contexto del IDE es bastante cómodo.

Integración continua

Teoría

Estos son programas de ángeles que lo protegen de ser despedido. En resumen, este es un software que monitorea los cambios en el código, crea y ejecuta pruebas escritas para usted. Si todo está bien después de cada confirmación/fusión, entonces la compilación brilla con una agradable luz verde/azul. Tan pronto como rompas algo, el sistema CI lo informará inmediatamente. Sin embargo, un poco de teoría: ¡esto es un clásico! Integración continua: mejora de la calidad del software y reducción del riesgo por Paul Duvall . (también conocido como “Integración continua” en ruso) Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 10Este libro incluso analiza la creación de su propio sistema de CI. Veamos las dos soluciones más populares en esta área.

Jenkins

Jenkins, también conocido como Hudson. Aplicación abierta, amigable y fácil de usar. Para familiarizarse más con Jenkins, intente lo siguiente:
  1. Descárgalo a tu computadora. Instala y configura JDK, Maven, ANT y todo lo necesario para el proyecto.
  2. Cree el primer trabajo y especifique la ubicación de su proyecto, por ejemplo, el pom.xml principal. Ejecútalo, asegúrate de tener algún tipo de prueba para que quede claramente visible.
  3. Aprenda a ejecutar su proyecto con diferentes configuraciones y opciones.
  4. Adjunte diferentes complementos y vea cómo funcionan en conjunto con su proyecto.
  5. Construya desencadenantes para diferentes trabajos. Crea una pequeña tubería.
  6. Explore DSL e intente integrarlo con Jenkins.
  7. Configure un esclavo desde otra computadora y/o conviértalo en una máquina normal para ejecutar compilaciones.
  8. Crea compilaciones nocturnas.
De los libros, simplemente lea Jenkins: La guía definitiva de John Ferguson Smart . Una guía clara con muchas capturas de pantalla. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 11

equipociudad

Sí, TeamCity no es gratuito, pero mira lo bien que está integrado en el ecosistema de productos JetBrains. Intellij Idea y TeamCity son una gran unión. En general, si ya está familiarizado con Jenkins, TeamCity no será un bosque oscuro para usted y viceversa. En lugar de esclavos, agentes, los mismos desencadenantes, etc. Pero a diferencia de Jenkins, TeamCity cuenta con funciones tan sorprendentes como, por ejemplo, ejecución remota, también conocida como confirmación probada previamente, muchas más estadísticas visuales y mucho más. Me gusta mucho la guía del usuario de YouTube, que creó el propio JetBrains ( Guía del usuario de TeamCity (Parte 1 de 9) - Introducción ). Considero que TeamCity es intuitivo y la documentación es de alto nivel. Pero si crees que hay un libro que vale la pena consultar, déjalo en los comentarios. Por supuesto, he enumerado sólo una pequeña parte de estos sistemas de CI, pero tenemos todo de alcance limitado. Probablemente la mejor guía para aprender sea la práctica. Lo instalé en mi computadora, lo inicié, bloqueé/restauré las compilaciones y me fui a la cama. Y luego puedes traerme con seguridad el libro de registro (si quieres :).

Sistema de control de versiones

No tiene sentido hablar mucho sobre VCS. Es simplemente algo que debería ser y sin el cual la gestión de proyectos sería como la era Mesozoica. Al igual que los sistemas CI, veamos dos de las soluciones más populares: Git y SVN.

git

Nuestro Git ha demostrado ser un sistema de control de versiones distribuido estable. Comience a aprender desde aquí y revise todos los capítulos con Git ya configurado. Luego hay una maravillosa serie de tutoriales interactivos de Code School. También hay una breve guía de ellos llamada Try Git: Code School . De los libros que puedo recomendar Control de versiones con Git de Jon Loeliger Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 12 Si estás tan acostumbrado a la tortuga (TortoiseSVN, nota del autor) y le tienes miedo a la consola, puedes, por supuesto, descargar su análogo TortoiseGit, pero, en mi opinión, mucho más agradable y estéticamente agradable La solución es un producto de Atlassian - SourceTreeApp. Puedes practicar con repositorios remotos, ya que hay suficientes servicios de host en Internet. Si quieres, entrena localmente. ¿No? Luego cree una cuenta en GitHub y trabaje en modo completo: realice un par de confirmaciones, bifurque algún proyecto de código abierto, realice un par de fusiones entre ramas, etc.

SVN

Otro VCS igualmente popular es SVN. Este sistema no puede presumir de distribución. Cada uno de ellos tiene sus propios enfoques, sus pros y sus contras. No dejes de leer la interesante conversación entre un novato y un usuario de SVN . Hay un libro gratuito de read-bean.com con traducción al ruso. Un minicurso de TutorialsPoint también te resultará de gran utilidad . No se pierda el sitio web oficial de Apache subversion.apache.org . El cliente más interesante para mí es el ya mencionado TortoiseSVN. Entre los libros se puede destacar: Control de versiones con Subversion de Michael Pilato . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 13Me gustó porque presta atención a la administración del propio servidor SVN. Espero no haberme perdido los puntos principales.

Herramientas de prueba

Sería una buena idea comprender en sus pequeños proyectos sandbox qué son las pruebas unitarias, de integración y de regresión. JUnit La teoría de las pruebas unitarias está bien descrita en los libros del artículo anterior. En particular, Clean Code incluso describe a junit como una de las bibliotecas populares en esta área. Pero cuando se trata de JUnit específicamente, hay un pequeño libro fantástico llamado Pruebas unitarias prácticas con JUnit y Mockito de Tomek Kaszanowski Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 14 . Por supuesto, hay más que solo JUnit y Mockito. Aquí el autor presenta Matchers, ofrece ejemplos de pruebas parametrizadas y explica brevemente TDD. También hay un libro que salió hace poco. Jeff Langr presenta Pragmatic Unit Testing en Java 8. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 15 El autor presenta a Hamcrest, describe las mejores prácticas y, por supuesto, Java 8. Puede leer con seguridad después del libro de Tomek. Por cierto, sobre TDD. No quiero plantear un holívar sobre si vale la pena usarlos, si es bueno o malo, si los clientes los necesitan. Solo recuerda: trabajar en TDD no es una novedad, y muchos proyectos utilizan esta metodología, y para muchas personas es la única e indiscutible regla. En teoría, puedes leer los clásicos. Kent Beck - Desarrollo basado en pruebas: con el ejemplo . Lo que más me gustó fue la parte sobre los patrones TDD. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 16Sorprendentemente, hay un buen curso en primera persona: Let's Play TDD (¡200 vídeos!) en Youtube. No menos interesante es la propia discusión de Fowler sobre si vale la pena o no usar TDD, si estropea el diseño y cosas por el estilo. Sólo recuerda esto de una vez por todas: TDD no crea un mal diseño, tú lo creas. Si usa más BDD (uno no interfiere con el otro) y, por ejemplo, usa Cucumber en un proyecto, entonces este es un plano ligeramente diferente. Un buen libro sobre esto es Manning BDD en acción: desarrollo impulsado por el comportamiento para todo el ciclo de vida del software de John Ferguson Smart . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 17Por cierto, John Ferguson Smart está promoviendo activamente este tema entre las masas. Si eres un Scrum Master o PM que finalmente no se lastima la vista, pero disfruta mirando las pruebas de cuándo-si-entonces, entonces asegúrate de seguir a John en Twitter . Con respecto a Cucumber, consulte la implementación de Java en el sitio web oficial y lea el libro The Cucumber Book: Behavior-Driven Development de Matt Wayne . Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 18

bibliotecas de terceros

Es importante poder utilizar bibliotecas populares cuando sea necesario: simplifican la vida diaria de todo desarrollador de Java. Las soluciones populares incluyen las siguientes: Joda Time. Ofrece reemplazar completamente la incómoda Fecha y Hora nativa con el más conveniente JodaTime. Aquí hay una buena referencia . Tenga en cuenta que si ya está utilizando Java 8, JodaTime no le será de mucha ayuda. El hecho es que la nueva API DateTime reemplazó por completo esta biblioteca y, en algunos lugares, incluso la copió y pegó inteligentemente. Según el propio artículo del autor , cada clase de Joda se puede reemplazar cómodamente con una análoga de java.time. Google guayaba. En muchos sentidos, Java 8 incluso reemplaza a Guava. Los mismos objetos, Stream API, Java Predicate y muchas otras cosas sugieren reemplazarlo y no usarlo en absoluto. Repito, si no tienes Java 8, no hay nada mejor que esta guía y tus manos directas.

Apache común

No es tan fácil lidiar con este monstruo: alrededor de 40 bibliotecas para todas las ocasiones, desde el conocido commons.lang hasta la validación xml, desde DBUtils hasta commons.io . Naturalmente, no es necesario que se familiarice con todo, pero será útil tener consigo libros de cocina y tutoriales. Por ejemplo, para comprender de qué se trata Apache Commons, puede consultar el libro de cocina de Jakarta Commons de Timothy O'Brein. Una guía para el futuro desarrollador de Java.  Empresa - parte 1 - 19

Conclusión

La empresa es tan vasta que sería estúpido comenzar a hablar de JavaEE y otros marcos sin todo lo que rodea a esta empresa. Por lo tanto, en la segunda parte nos centraremos en cada capa de la arquitectura multinivel, consideraremos los servicios, etc. Muchas gracias por su atención. Fin de la primera parte. Partes anteriores de la serie:
  1. Una guía para el futuro desarrollador de Java. Conceptos básicos de Java
  2. Una guía para el futuro desarrollador de Java. código elegante
Original con DU
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION