Diario de Prácticas (I)
Bueno, hoy es el tercer día de las prácticas, y por ahora la diferencia con lo que imaginaba es bastante grande.
Antes me quejé de la red y la velocidad de internet aquí: en el dormitorio no hay red en absoluto, y en el lugar de clase la velocidad es bastante mala. Este lío me hizo darme cuenta de repente de que tengo una gran adicción a internet, aunque personalmente creo que no es un problema. Internet puede perfectamente convertirse en el “Khala” que ilumina la mente de las personas, permitiendo así que nuestra especie evolucione hacia un nivel altamente desarrollado…
Volviendo al tema, estos dos días he estado aprendiendo Spring Framework, lo cual me ha dado una sensación de frescura. Al ser nuevo en esto, no pude evitar exclamar que el código Java también puede ser tan elegante.
Esta exclamación revela lo novato que soy. Al pensarlo mejor, ¿qué lenguaje no puede ser elegante? La elegancia es el fruto de un pensamiento meticuloso y un diseño cuidadoso, y parece no tener mucha relación con el medio en sí.
RESTful
Actualmente, usar el framework Spring es principalmente para construir aplicaciones web. Seguí el tutorial de la página oficial y, de paso, repasé las ventajas de la arquitectura RESTful. Resumiendo, hay los siguientes puntos:
- Desacoplamiento entre frontend y backend. Dado que esta arquitectura está orientada a recursos, el texto formateado (¿en la mayoría de los casos JSON?) en lugar de toda la página HTML se utiliza como respuesta, lo que permite una separación completa entre frontend y backend.
- Claridad en la representación. RESTful aprovecha plenamente las características del protocolo HTTP, utilizando URI para solicitar recursos en lugar de una larga cadena de QueryString separada por
&. Esto refleja la filosofía de diseño de HTTP (Protocolo de Transferencia de Hipertexto), y no solo lo trata como un protocolo de transporte de bajo nivel mientras se hace cualquier cosa en las capas superiores. Define estrictamente las operaciones CRUD sobre los recursos y las implementa utilizando los verbos HTTP.
Yo también acabo de salir del pensamiento antiguo del desarrollo web, así que probablemente mi comprensión aún no sea muy profunda. Si hay algún error, ¡no duden en corregirme!
Spring como framework web
Ha pasado exactamente un año desde el proyecto final de la asignatura Java Web en segundo año hasta ahora, y ya he conocido varias tecnologías de desarrollo web. Todavía recuerdo la emoción que sentí la primera vez que desplegué una aplicación en un servidor y la accedí con éxito desde mi teléfono :) Tener curiosidad y seguirla para explorar lo desconocido es realmente algo maravilloso.
Desde JSP de Java hasta Django de Python, luego Flask y finalmente volver a Java, me encontré con Spring.
JSP es una tecnología verdaderamente antigua, y usarla es muy engorroso, especialmente en las etapas finales del desarrollo cuando se hacen cambios para alguna funcionalidad. Todo el Servlet se convierte en un monstruo enorme y prolijo. Y cuando JavaBean se enfrenta a conexiones de base de datos que requieren paginación, intentar hacerlo de manera elegante es simplemente una quimera. Las páginas JSP, que originalmente pretendían mostrar alta reutilización, se vuelven irreconocibles debido a varias sentencias <%if(...)%>, hasta el punto de que pude escribir código que me hizo dudar de mi existencia. Probablemente escribiré un artículo reflexionando específicamente sobre estos terribles errores que cometí. Dicho esto, ni siquiera sé cómo escribir un servicio web con estilo RESTful usando JSP.
Las cosas se aclaran cuando llegamos a Python. Ya sea por la potencia de Django o la claridad y simplicidad de Flask, en general, a diferencia de las tecnologías más básicas y pioneras, los frameworks parecen mucho más sencillos. Si clasificamos a los desarrolladores, el primer nivel serían los creadores de la tecnología, y el último nivel los usuarios de las aplicaciones (incluso los desarrolladores que simplemente toman prestado). Creo que los desarrolladores de frameworks están en el segundo nivel. Resumen el flujo de desarrollo de una tecnología común, extraen las partes más utilizadas, fundamentales y esenciales, y las convierten en componentes reutilizables, creando así un excelente framework. Por eso, los buenos frameworks también se derivan de proyectos de aplicación reales. Django es así, y Spring también.
Pero en última instancia, creo que Spring se parece más a Flask. Ambos son muy ligeros y casi no imponen restricciones. Quizás los desarrolladores de Flask tomaron alguna inspiración de Spring.
Algo interesante: sobre el símbolo @
Durante el aprendizaje, noté que el enrutamiento de los controladores en Spring se implementa mediante la característica de Java llamada “annotation”. Todavía necesito aprender más sobre esta característica. Curiosamente, Flask también usa una forma similar, aunque en Python @ se llama decorador, un azúcar sintáctico para envolver funciones. Después de revisar algunos materiales, parece que esta característica fue realmente tomada por Python de Java, pero con una funcionalidad más compleja.
Por lo tanto, como ya admiraba Flask, al ver esto no pude evitar aumentar mi aprecio por Spring.
Resumen
En resumen, mi nivel aún no es muy alto, así que no he mencionado algunas características centrales de Spring como IoC, DI, etc. Pero me ha hecho darme cuenta de por qué Java, un lenguaje que parece envejecido, sigue siendo tan duradero, y también ha aumentado mi aprecio por Java.
Espero poder aprender más cosas. Es realmente emocionante.
Terminaré con una frase clásica de los diarios: “Hoy ha sido un día realmente significativo.”