Capítulo 1. Todo lo que necesitas es Java

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Anders Norås

Mientras trabajaba en la primera gran revisión de Visual Studio, el equipo de Microsoft presentó al mundo tres personajes desarrolladores: Mort, Elvis y Einstein.

Mort era el desarrollador oportunista de, que hacía arreglos rápidos e inventaba cosas sobre la marcha. Elvis era el programador pragmático, que construía soluciones para el tiempo mientras aprendía sobre la marcha. Einstein era el programador paranoico, obsesionado con diseñar la solución más eficiente y averiguarlo todo antes de escribir su código.

En el lado Java de la división religiosa de los lenguajes de programación, nos reíamos de los Morts, y queríamos ser Einsteins construyendo marcos para asegurarnos de que los Elvis escribían su código de la "forma correcta".

Eran los albores de la era de los frameworks, y a menos que dominaras el último y mejor mapeador relacional de objetos y el framework de inversión de control, no eras un programador Java propiamente dicho. Las bibliotecas se convirtieron en marcos con arquitecturas prescritas. Y a medida que estos marcos se convirtieron en ecosistemas tecnológicos, muchos de nosotros nos olvidamos del pequeño lenguaje que podía: Java.

Java es un gran lenguaje y su biblioteca de clases tiene algo para cada ocasión. ¿Necesitas trabajar con archivos? java.niotiene lo que necesitas. ¿Bases de datos? java.sql es el lugar al que acudir. Casi todas las distribuciones de Java tienen incluso un servidor HTTP completo, aunque tengas que salir de la rama con nombre Java y entrar en com.sun.net.httpserver.

A medida que nuestras aplicaciones avanzan hacia arquitecturas sin servidor, en las que las unidades de implementación pueden ser funciones únicas, disminuyen las ventajas que obtenemos de los marcos de aplicaciones. Esto se debe a que es probable que dediquemos menos tiempo a gestionar los aspectos técnicos y de infraestructura, centrando nuestros esfuerzos de programación en las capacidades empresariales que nuestros programas realizan.

Como dijo Bruce Joyce

Tenemos que reinventar la rueda de vez en cuando, no porque necesitemos muchas ruedas, sino porque necesitamos muchos inventores.

Muchos se han propuesto crear marcos genéricos de lógica empresarial para maximizar la reutilización. La mayoría han fracasado, ya que en realidad no existen problemas empresariales genéricos. Hacer algo especial de forma específica es lo que diferencia a un negocio de otro. Por eso está garantizado que escribas lógica empresarial en casi todos los proyectos. En nombre de conseguir algo genérico y reutilizable, uno puede tener la tentación de introducir un motor de reglas o similar. A fin de cuentas, configurar un motor de reglas es programar, a menudo en un lenguaje inferior a Java. ¿Por qué no intentar simplemente escribir Java en su lugar? Te sorprenderá comprobar que el resultado final será fácil de leer, lo que a su vez hace que el código sea fácil de mantener, incluso por programadores que no sean de Java.

Muy a menudo te encontrarás con que la biblioteca de clases de Java es un poco limitada, y puede que necesites algo para que trabajar con fechas, redes o cualquier otra cosa te resulte un poco más cómodo. No pasa nada. Utiliza una biblioteca. La diferencia es que ahora utilizarás esa biblioteca porque ha surgido una necesidad concreta, no porque formara parte de la pila que siempre has estado utilizando.

La próxima vez que te venga a la mente una idea para un pequeño programa, despierta de tu hibernación tus conocimientos de la biblioteca de clases Java en lugar de echar mano de ese andamiaje JHipster. El hipsterismo está pasado de moda; vivir una vida sencilla es lo que se lleva ahora. Seguro que a Mort le encantaba la vida sencilla.

Get 97 cosas que todo programador Java debe saber now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.