“Hay dos tipos de lenguajes de programación: aquellos de los que la gente se queja y aquellos que nadie usa.” — Bjarne Stroustrup.
“Quienes critican y se quejan de Java por lo general parecen ser jóvenes y estar más expuestos a JavaScript que a cualquier otra cosa. En comparación con JS, Java puede parecer un poco pesado y restrictivo. Hay código repetitivo por todas partes, además de un sistema de tipos que el compilador hace cumplir estrictamente. Pero si pudiera elegir, escogería una base de código Java no óptima antes que JS. Sin duda alguna.”
“Solo después de adquirir experiencia real trabajando con código distribuido en decenas o cientos de archivos se empieza a entender que las llamadas ‘restricciones’ de Java en realidad son mecanismos de protección que evitan que te dispares en el pie.”
“Descubrir Java y volver a cambiarme fue como una revelación. Me di cuenta de que amo Java y su ecosistema. Así que decidí anotar algunas de las cosas que más me gustan del ecosistema Java. Así que, si alguien critica a Java, aquí tienes 25 razones para decirle por qué está equivocado.”
- Ecosistema maduro
- WRITE ONCE, RUN EVERYWHERE
- Compatibilidad con versiones anteriores (backward compatibility)
- Lenguaje de tipado fuerte
- Ciclo de lanzamientos rápido, mejora continua
- Buenos IDEs
- Soporte de Native Image en GraalVM
- Bibliotecas y frameworks de código abierto
- Multithreading
- Orientación a objetos madura
- Gestión de memoria y recolección de basura
- Observabilidad y monitoreo
- Soporte para programación funcional
- Documentación abundante
- Herramientas de build y gestión de dependencias
- Potentes capacidades de testing
- Comunidad enorme
- Anotaciones
- Funciones de seguridad
- Rico conjunto de APIs
- Rendimiento
- Concurrencia estructurada
- Hilos virtuales
- Pattern matching para la sentencia
switch - Plantillas de cadenas
62 comentarios
Todas las ventajas que enumeraron de Java en realidad parecen ser cosas en las que otros lenguajes son mucho mejores que Java.
Nadie menciona Spring.
No tengo quejas sobre el lenguaje Java en sí,
pero la realidad local de que haya que aprender Spring me resultó algo frustrante, así que no me pareció tan atractivo.
Java es bueno, pero Spring es... terrible :(
Los 25 carecen de diferenciación. Al margen del respeto, son hienas en un festival de legado.
Aunque se presentan hasta 25 razones por las que sigue siendo popular incluso en 2024,
parece que hay suficientes lenguajes que podrían reemplazar a Java sin problema...
Lo popular es la JVM.
La mayoría de las razones, al compararlas con los ecosistemas de otros lenguajes modernos,
realmente no son una gran fortaleza, y parece que el autor escribió el texto sin separar a Spring de Java.
Es natural preferir Java porque tiene un entorno de desarrollo muy bien consolidado.
Del mismo modo, como solo puedes rendir bien trabajando dentro de ese entorno, terminas queriendo trabajar solo ahí, y si te piden otro entorno también puede generarte rechazo.
Sin embargo, de aquí en adelante parece que la IA programará cada vez mejor en este tipo de lenguajes, y más que nunca hará falta la capacidad de adaptarse para sobrevivir también en entornos diversos, no solo en el que a uno le resulta cómodo.
En ese sentido, la capacidad de adaptarse a distintos lenguajes ya no parece una opción, sino una necesidad.
Si tuviera que hacer una web app de registros, probablemente usaría Java sí o sí. Con solo el punto 1 basta... Si es para desarrollo simple y rápido, creo que Python es una buena opción. JS... no sé, a mí me desespera porque es demasiado enredado.
Si voy a usar Java, mejor usaría Kotlin, y considero que más que Java como lenguaje, los lenguajes del ecosistema .NET son los que siguen el ritmo del desarrollo de Kotlin.
Creo que Java debería quedarse como lenguaje de mantenimiento para los servidores de organismos públicos que fueron construidos hace tiempo con Java; además, en Corea los CEOs tienden a insistir con Java porque están familiarizados con la palabra “Java” por haberla visto en publicidad. Prueben Kotlin y .NET antes de considerar Java.
A propósito de que salió el tema de Java... ¿qué opinan de Go? A mí, la verdad, me gusta más Kotlin que Java, pero como tuve demasiadas frustraciones con Gradle, al final me estoy quedando con Go. Desde mi experiencia de haberlo usado aunque sea un poco, pensé: ¿no será que en cualquier lugar donde se necesite Java, Go también puede cubrirlo?
En el caso de JS/TS, a mí también me gusta, pero aun así me parece que compararlo en el mismo nivel que Java quizá es un poco forzado. Al final, sigue teniendo la limitación de ser single-thread, y aunque dicen que hacen multiprocessing con pm2 y cosas así, Java también tiene muy bien resuelto lo de virtual thread, y de hecho creo que eso es mejor. Claro, siguiendo esa línea de pensamiento terminé viendo las goroutines y me asenté en Go... jajaja;;
Creo que lo mejor es usar cada lenguaje en el lugar adecuado según la necesidad. Yo, incluso ahora en 2024, sigo amando PHP, y también les tengo cariño a JS y Java (Kotlin), aunque no tanto como a Go. Los lenguajes son herramientas, así que mientras se usen bien de acuerdo con su propósito, no hay problema; por eso dejo este comentario.
Creo que ahora de verdad llegó a un nivel realmente usable. En mi empresa también trabajo únicamente con Go.
En la época en que usábamos
godepyglide, si una sola dependency se desalineaba, te podías pasar todo el día tratando de hacer que encajara, y te quedabas pensando si esto era realmente un lenguaje o apenas algo que se le parecía.. 😂Aunque exista la limitación del single-thread, en una era donde se orquesta envolviendo en contenedores para que no consuma demasiado por CPU por cada pod, no puedo evitar pensar: ¿realmente esa limitación es tan grande?
A menos que, en lugar de levantar varios contenedores en un solo servidor como antes, ese contenedor estuviera consumiendo muchísimo CPU.
En la mayoría de los casos de servidores web, como no consumen mucho CPU y más bien tienen alto throughput de I/O, creo que Node también puede considerarse como una opción.
Por supuesto, si se trata de un dominio que requiere mucho CPU, entonces habría que considerar otro lenguaje, o también se podría llamar código nativo mediante
napi.Creo que es un lenguaje útil para el trabajo asíncrono porque tiene la característica de abstraer bien las tareas asíncronas con goroutines. El código asíncrono de Rust o Python me parece un caso de pensarlo demasiado. Tanto al escribirlo como al leerlo, la carga cognitiva suele ser alta.
Yo solo he usado Go de antes de que incluyera genéricos, pero me parece un lenguaje excelente. Al principio las herramientas de verdad eran bastante malas, pero han mejorado mucho.
La sintaxis es tosca, pero precisamente por eso es fácil de aprender.
No se peleen....
La discusión se está acalorando.
Si tienen alguna objeción, por favor escriban solo su contenido.
Se han eliminado los comentarios que infringen las normas de uso del sitio.
Además, tengan en cuenta que se han bloqueado las cuentas que repiten actividades que no se ajustan a las normas de uso.
Les pedimos mantener una discusión sana.
¡Java 1.8 es realmente una versión excelente!
Creo que ya va siendo hora de dejar atrás ese lema de
write once run everywhere... jajaPero bueno, ¡así es Java! jajaja
Programar en Java en IDEA es un placer, pero si no fuera por IDEA sería infeliz. (Y lo fui)
En Corea hay muchas personas desarrolladoras de Java, al punto de que se dice que es una "república de Java", ya que también tiene ventajas en contratación y está el Electronic Government Framework.
En las empresas también hay muchos casos de migración desde otros lenguajes a Java, y por experiencia, algunas personas desarrolladoras de Java solo quieren trabajar con Java.
Dicen que los sistemas existentes hechos en otros lenguajes son el problema y que hay que migrarlos a Java. Pero tampoco quieren usar Kotlin.
Me dio la impresión de que había cierta resistencia a aprender algo nuevo. Como con esa idea de: si de todos modos todo se puede hacer con Java, ¿para qué?
¿No suelen usar genéricos los que trabajan en SI?
Creo que ese es justamente el problema... jajaja
A este punto, siento que Java es una religión.
Si le damos la vuelta a la frase
Las personas que critican y se quejan de Java suelen ser jóvenes y parecen haber estado más expuestas a JavaScript que a cualquier otra cosa.lo que también está diciendo es que mucha gente que ha usado JS llegó a la conclusión, por experiencia, de que Java no es tan bueno.
¿Por qué no reconocer que cada uno tiene sus propias ventajas y desventajas, en lugar de decir solo que Java es mejor...?
Se parece a la gente que dice que SQL es mejor sin haber usado una document db y sin importarles realmente sus características.
Creo que también se está dejando fuera el hecho de que ya existía una situación donde Java se usaba muchísimo, y que muchos desarrolladores senior solo saben Java y no quieren cambiar, por eso no se ha podido cambiar. Viéndolo desde este momento, creo que las fortalezas propias de Java ya son casi inexistentes.
Por mi larga experiencia, creo que Python y JS tienen una mayor proporción de fanáticos.
Creo que puede parecerte que hay más insistencia porque probablemente estás en una posición donde necesitas promover JS/Python en lugar del lenguaje Java.
En lo personal, sí he visto a algunas personas que ni siquiera consideran por completo otro lenguaje aparte de Java. En cambio, la mayoría de quienes trabajaban con otros lenguajes sí mostraban disposición a usar un lenguaje distinto según la situación.
Supongo que podría pasar si tu primer lenguaje fue Java, pero nunca he visto un caso así a mi alrededor, así que me cuesta imaginarlo.
En mi caso también, el primer lenguaje que aprendí al entrar a la universidad fue C++, y conforme avancé de año fui conociendo otros lenguajes de forma natural, así que no me pesa tanto aprender un lenguaje nuevo... Al final, la sintaxis básica (declaración de variables, estructuras de control, funciones, etc.) suele ser bastante parecida en todos.
En esos casos, creo que quizá al principio aprendieron el lenguaje de una forma demasiado limitada y por eso su espectro se volvió más estrecho. Y eso lo he visto más seguido en personas que conocieron Python como primer lenguaje con fines de deep learning o estadística matemática. Yo también lo he visto, y como ambas son experiencias personales, supongo que las dos posturas tienen algo de razón.
Yo también tuve una experiencia similar, así que pienso lo mismo.
A quienes les gusta Python no andan diciendo que Python sea un gran lenguaje. Tampoco hay gente de JS insistiendo en que el lenguaje sea bueno. Tanto Python como JS simplemente tienen buenos ecosistemas para desarrollar en áreas específicas. Solo con Java da la impresión de que siempre hay gente empeñada en decir que es bueno sí o sí..
Los propios desarrolladores de JS lo usan como motivo de broma. ¿Esto siquiera es un lenguaje?.. Si no fuera por
tsT_TSi me pusiera a defender a Java, parecería que, al contrario, Java es justo el que más terminan molestando por una u otra razón. ¿La clásica posición del tío del barrio que todos conocen...?
Si buscas contenido relacionado con Java en Google estos días,
se inunda de publicaciones de blogs en coreano con el mismo contenido que enseñan en las academias,
y me frustra que sea difícil encontrar referencias de verdad.
La búsqueda de Google se ha deteriorado bastante...
18, 25, 20, 10, 8, 6, 5, 3, 2, 1, etc., no son exclusivos de Java. Comparación errónea
Viéndolo ahora, Java también tiene estas funciones y no parece que haya motivos para criticarlo; no creo que se trate de decir que usen Java solo porque esas cosas solo se pueden hacer en Java.
Más bien, mientras lo leía, no podía dejar de pensar: "Mmm... ¿no es mejor .NET?"
A mí también me gusta C#, pero en entornos que no son Windows, no sé si realmente valga la pena usarlo.
Es el mismo contenido que el comentario de arriba. Esa época terminó hace muchísimo tiempo.
La decisión tardía de MS terminó arruinando así la percepción de la gente.
Si solo desarrollas aplicaciones para Windows, el ecosistema de MS tiene muchas ventajas, así que está bien, pero en Linux o macOS no veo nada mejor que Java. Aunque MS lo esté soportando tardíamente, no hay una razón real para usarlo. El momento no es bueno.
Ya no es .NET de la época de .NET Framework, ¿por qué limitarlo a aplicaciones de Windows?
De hecho, en los teléfonos que ustedes ya tienen en la mano están corriendo motores de juegos basados en .NET;
222
333
No es por criticar a Java, pero la razón por la que Java resulta molesto es porque, curiosamente, solo los desarrolladores de Java desprecian y comparan a los de otros lenguajes, y tienen un extraño orgullo por Java. Me gusta Java, pero no entiendo por qué se comportan así. Cada lenguaje tiene su propia filosofía, sus ventajas y desventajas, y un ecosistema distinto; lo único que logran es caer mal cuando de repente muestran ese raro orgullo por Java.
Parece que hacen falta materiales para presentar como fundamento del orgullo que sienten los desarrolladores de Java por Java. Si es difícil presentarlos, creo que es una afirmación difícil de aceptar.
Parece que siempre hay gente así con cualquier lenguaje o herramienta. Creo que Java destaca más porque, cuando salió, era un lenguaje más cool que C/C++ y, al mismo tiempo, se usó ampliamente en entornos empresariales, así que la base de desarrolladores creció mucho.
Y últimamente me da la impresión de que los desarrolladores de Rust están ocupando ese papel.
Sorprendentemente, la razón por la que Java se volvió dominante es porque gastaron muchísimo dinero en marketing jajajaja
https://www.youtube.com/watch?v=NVuTBL09Dn4
Hay un video de YouTube sobre cómo un lenguaje se vuelve mainstream; ¡también les parecerá interesante si lo ven!
https://www.youtube.com/watch?v=QyJZzq0v7Z4
Deberías desquitarte con el desarrollador de Java, pero lo estás haciendo con Java...
Eso es por tu comprensión lectora…
Ya no hace falta que yo responda, otra persona ya lo escribió.
No, no es así.
Parece que ni siquiera sabe qué es la alfabetización.
De repente, si se te vino a la mente Eclipse hecho en Java y VSCode hecho en JavaScript (TypeScript)... ¿será una comparación equivocada? Claro, Eclipse tiene más funciones.
Es una comparación equivocada..
Hay que ver cuándo salió.
Cuando apareció Eclipse y durante un tiempo, Eclipse tenía una posición similar a la que tiene VS Code ahora.
Yo tampoco uso Eclipse porque de verdad es muy incómodo,
pero en ese entonces no había otra opción decente más que Eclipse.
La fortaleza de JavaScript es que Google mantiene el motor V8.
Java, abandonado..
El backend de una app de Electron sí es JavaScript... el proceso principal y el proceso de renderizado corren por separado, pero ambos funcionan con código JavaScript.
Del mismo modo, ¿la JVM al final no es también un runtime implementado en nativo?