¿Por qué la gente piensa que Java es un lenguaje corporativo antiguo?

Creo que mucho de eso viene de programadores más jóvenes. Si tienes más de 20 años, es probable que no recuerdes un momento en el que Java no existía, por lo que se sentirá algo viejo, incluso si no lo es.

A menudo, las personas “envejecen” las cosas en función de cuándo oyeron hablar de la cosa, en comparación con la antigüedad que tienen. Eso significa que cuando empiece a programar, escuchará sobre Java (porque es popular y tiene un nombre genial), luego escuchará sobre, por ejemplo, Ruby, y asumirá que es más nuevo que Java, pero no lo es, se trata de la misma edad. Luego escuchará sobre Python y asumirá que es más nuevo que Java, pero no lo es, es aproximadamente 5 años más antiguo.

Luego está el bit ‘corporativo’, bueno, Java fue creado por una compañía de miles de millones de dólares (Sun), luego comprado por una compañía aún mayor de miles de millones de dólares (Oracle), y es muy impulsado por compañías aún más grandes de miles de millones de dólares (como IBM , Intel). Básicamente, si buscas en Google sobre temas de Java, verás muchas cosas corporativas, muchas palabras de negocios, muchos comentarios sobre consultoría y cambios de paradigma.

Creo que, finalmente, se trata de un malentendido fundamental de la tecnología de los principiantes.

Los principiantes ven empresas como Sun, Oracle, IBM, Intel y grandes corporaciones, se mueven lentamente, no son innovadoras y solo un montón de trajes caminando. Luego miran a compañías de sitios web como Facebook o Uber y ven nuevos inicios en diferentes idiomas.

Así que los principiantes solo están viendo el marketing. No están viendo que Facebook y Uber simplemente no podrían existir sin los esfuerzos de Sun, Oracle, IBM, Intel y otros. No estoy muy seguro de por qué es así, tal vez tenga que ver con que la tecnología sea increíblemente avanzada, simplemente no la vemos, ya que se convierte en parte de nuestro mundo.

Es como si alguien estuviera sentado en un avión, probara Internet y se sorprendiera gratamente de que Facebook funcionara. Asocian los buenos sentimientos a Facebook y olvidan que la participación de Facebook fue trivial en comparación con el Boeing 777 que volaba por el cielo a 600 mph comunicándose a través de tecnología satelital, antenas terrestres y protocolos de Internet para hacer que todo sea capaz de obtener una foto de una hamburguesa gourmet. un servidor de Facebook en una computadora portátil. Eso es olvidar toda la tecnología en la computadora portátil y en el servidor comprado por Facebook.

Me he salido del tema, pero creo que hay algo en que la tecnología asombrosa es invisible y la tecnología adecuada es totalmente visible.

Eso significa que de la misma manera que IBM u Oracle se ve como un sistema antiguo y corporativo, Java también puede serlo.

Bueno, solo hay un idioma más popular que Java: JavaScript, y adivina por qué. Es porque tiene el monopolio en la web (en el navegador) y para los programadores autodidactas más jóvenes abrió la puerta al mundo de la programación (más como scripting).
Para la mayoría de la gente, esto es suficiente. Demonios, incluso puedes usar Node.js en un backend también. “La página web funciona de alguna manera, permítame centrarme en el CSS”. Cita definitiva de estos jóvenes. El diseño y la apariencia es el objetivo, a quién le importan los medios. “A quién le importa la programación orientada a objetos o funcional, me gusta mi script en 1 línea”. – Otra cita definitiva. Hoy, gracias a internet, hay muchos de estos smartasses. La programación solía ser solo para educados, ahora está abierta a todos y sabes que hay más tontos que personas inteligentes en este mundo.
Por otro lado, la segunda vez que ingresa en el entorno de producción de una empresa seria, los trabajos bien remunerados, por así decirlo, todas sus habilidades de Javascripting pueden ir al infierno. El código debe ser confiable, fácil de mantener, respaldado por estándares, seguro, de alto rendimiento, altamente disponible, configurable, monitoreable, loggable, etc, etc … Si Javascript es tan bueno, ¿por qué cree que todas las compañías detrás de los principales navegadores están creando? ¿Un nuevo lenguaje de ensamblaje web?

Garry Taylor tiene una excelente respuesta a esta pregunta. Me gustaría profundizar en un punto relacionado. El software en su conjunto sufre de una forma disfuncional del dilema del innovador, donde las tecnologías inmaduras, en su mayoría inferiores, reemplazan constantemente a las maduras porque son más simples y más fáciles de entender. Es disfuncional porque da como resultado importantes refinamientos para que las tecnologías existentes se abandonen y tengan que reinventarse en una nueva plataforma.

El ejemplo actual que encuentro más frustrante son las bases de datos NoSQL. La única virtud potencial de las bases de datos NoSQL es la mejora en la escalabilidad que obtienen al deshabilitar las uniones y abandonar las garantías de ACID. A muchos desarrolladores les encanta esta idea porque, no por casualidad, las uniones y las transacciones son cosas que nunca entendieron y SQL es esta cosa corporativa aburrida que se usa en productos que se venden a personas con trajes de otras personas con trajes. Desafortunadamente para ellos, una base de datos SQL sin uniones y garantías ACID se pueden escalar tan bien como una base de datos NoSQL, pero los modelos de datos que utilizaron las bases de datos NoSQL se abandonaron en la década de 1970 por ser fundamentalmente defectuosos.

Java está teniendo un problema similar. Tiene un problema real (carece de facilidades de metaprogramación) y uno percibido (solía ser muy detallado pero ha mejorado mucho), que son problemas relativamente menores (el número de casos que requieren metaprogramación es cercano a cero), pero porque De estos problemas, se está empezando a perder el lenguaje que “se siente menos detallado”, algunos de los cuales son en realidad menos flexibles (Ir), pero complacen a algunos desarrolladores que desean sentirse inteligentes al escribir menos caracteres.

Personalmente, creo que Java es extremadamente envejecido.

Tal vez un poco de historia sobre mí: tengo 20 años, actualmente estudio ingeniería en computación y he conocido C, C ++ Java, Python, Assembly, Go, Swift, Common Lisp, Scala, Clojure, OCaml, Haskell, Rust, Eiffel, Smalltalk, Erlang, Elixir y probablemente otros mil idiomas que ya me he olvidado. No sé todo sobre cada idioma en la lista, y nunca he escrito ningún código en aproximadamente la mitad de ellos, pero he visto algunos fragmentos de código y principios de diseño de ellos.

Hace aproximadamente un año, después de una extensa programación tanto en Java como en Lisp (común), descubrí que Lisp tenía al menos 30 años más que Java, y eso fue un gran shock para mí. Siempre pensé que Lisp era más joven, simplemente por esa elegancia atemporal (y por el tamaño de Java en comparación con el de Lisp).

Entonces, ¿por qué pienso en Java como antiguo? Honestamente, creo que es debido a sus características de procedimiento, tipo C. Como seguramente sabes, Java, como C ++ y C, es un lenguaje de procedimiento, que se centra en las instrucciones y la forma en que se ejecutan mediante el hardware subyacente. Esto contrasta enormemente con Lisp orientado a datos, Smalltalk orientado a objetos y Haskell funcional.

No tiene la agilidad de Lisp, la expresividad de Smalltalk o la elegancia de Haskell. Si me imagino a una persona joven, me imagino a alguien en una moto o una motocicleta corriendo entre filas de autos atrapados en un atasco de tráfico, o subiendo por una rampa para volar por encima de los autos que esperan. Por otro lado, casi no puedo imaginar el Java rígido, de placa de calderín, siendo usado como una moto o un scooter.

Para agregar a la lesión, Java pierde algunas características nuevas como:

  • Tipos de variantes
  • Clases de tipo
  • Funciones instanciadas
  • Zurra
  • Inferencia de tipos
  • Tuplas y tuple deconstrucción
  • Genéricos sobre primitivos
  • Creación parcial de plantillas
  • Funciones flotantes libres
  • Separación DMV
  • Objeto vacío / unidad
  • Sobrecarga del operador
  • Opcionales que funcionan sobre el vacío (Pista: no lo hacen)
  • Soporte multihilo decente

En cambio, tiene:

  • Objetos nulos (es 2016, pensé que hemos avanzado como especie).
  • si / while / para bucles
  • Estado global mutable
  • Herencia capaz de arruinar completamente los genéricos.
  • ConcurrentModificationExceptions (¿Por qué existen?)

Bueno, al menos el utillaje es decente.

Java es viejo. No de una manera atemporal y antigua, sino más bien en el sentido de que es aburrido, rígido, está programado y depende esencialmente de conceptos que son más antiguos que el Algol en el que se basa.

Por favor, no me digas que consideras a Algol como “nuevo”.

Java no es un lenguaje corporativo antiguo. Es un lenguaje extremadamente maduro con un enorme ecosistema de herramientas y bibliotecas. Es un lenguaje escrito y, por lo tanto, los errores de compilación no aparecen en todas partes durante el tiempo de ejecución. Es extremadamente estable y de alto rendimiento. Es mantenible y puede funcionar por edades.

¡Y esta es una razón por la cual las empresas lo aman! No quieren idiomas que omitan los puntos y coma porque es genial. No quieren lenguajes que no estén compilados. No les importa una o dos líneas adicionales de código. Quieren soluciones estables, mantenibles, comprobables y de alto rendimiento. Y Java es una opción perfecta debido a muchas otras cosas (administración de memoria, etc.).

¿Realmente quieres que tu banco juegue con un lenguaje genial que no esté probado en la batalla? ¿Pondrías tu dinero en sus manos?

Echa un vistazo a los diez lenguajes de programación más populares y el más joven es C #. El resto es casi tan antiguo como Java o más viejo.

Por cierto, ser viejo lenguaje corporativo es una ventaja! Es imposible imaginar cuánto dinero se invirtió en Java durante las últimas dos décadas, por lo que Java estará allí durante muchos años. Cualquier cosa que construyas hoy en Java funcionará diez años después. Compárelo con Swift de Apple, que es más joven y está evolucionando, encontrará que su código no se puede compilar seis meses después en una versión nunca de Swift … Es completamente lógico, ya que Swift es muy joven y necesita mucho tiempo para convertirse Madura, pero esto no te va a pasar en Java. Python, que es incluso más antiguo que Java, tiene serios problemas con la compatibilidad con versiones anteriores entre 2.xy 3.

¿Por qué se percibe a Java como un lenguaje corporativo antiguo? Bueno, vea la película “Piratas de Silicon Valley” en la que puede ver al joven Steve Jobs luchando contra IBM. Mucha gente está tratando de posicionarse de manera similar y, por lo tanto, no quieren usar las mismas herramientas como las grandes empresas :-).

Java tiene más de 20 años (1995). Eso es antiguo en términos de tecnología. Quiero decir, es la mitad de la computadora personal (por ejemplo, Altair en 1974, Apple II en 1977).

Claro, no es tan antiguo como Python (1991) o Ruby (1993–1995), pero está ahí arriba.

Y Java es muy corporativo. No puedo pensar en una sola gran empresa u organización que no use Java.

Así que supongo que es técnicamente correcto que Java sea un “lenguaje corporativo antiguo”. Algo así como HTML (1993), JavaScript (1995 – ¡la misma edad que Java!), C (1972), C ++ (1983), etc.

Ahora que lo pienso, ¿hay algún idioma que no sea un lenguaje corporativo antiguo?

Bueno, eso es porque es viejo y corporativo, y obviamente es un lenguaje

Java es “corporativo” en el sentido de que el mundo de Java tiene preferencia técnica y cultural por aburrir la sostenibilidad a largo plazo sobre el glorioso heroísmo a corto plazo. Lo que coincide con el modus operandi de una empresa madura y saludable: desea que su almacén dure por muchos años y sea adaptable a los cambios en la forma en que hace su negocio; y no quieres reconstruirlo desde cero cada seis meses después de que se derrumbe debido a todos los “hacks inteligentes” que aplicaste la vez anterior. Lo mismo es válido para el sistema de software de gestión de almacén.

Hay muchas cosas sobre Java que a las personas no les gustan, pero luego comienzan a apreciarse (y algunas veces se replican en otros lenguajes de programación) cuando se toma en cuenta la longevidad.

Java es “antiguo” en el sentido de que algo llamado “Java” ha existido durante veintiún años. Lo que realmente no creo que sea más que una racionalización tonta como la de “He oído que en los viejos tiempos los lenguajes de programación eran feos, así que esa debe ser la razón”. Hay muchas cosas que son de la misma edad que Java o más viejo, incluyendo Linux, arquitectura x86, Erlang y JavaScript, pero no recuerdo que nadie los llame obsoletos.

Porque hasta cierto punto es un lenguaje más antiguo (en comparación con Go, Julia, Scala, C #, etc.) y es usado por prácticamente todas las grandes corporaciones. El desencanto actual con Java en mi opinión, se relaciona principalmente con la idea de una iteración rápida dentro de los ciclos de desarrollo. Los nuevos lenguajes de escritura estática pueden ser más rápidos de escribir y los lenguajes dinámicos son casi siempre más rápidos de escribir con la idea de que los desarrolladores tienen experiencia en los idiomas respectivos. Java también se ha coronado con el término “grado empresarial”, que también se define como un “lenguaje corporativo”, como en el caso de las grandes empresas que escriben software empresarial .

“Su grado empresarial” es también la respuesta que generalmente obtengo cuando le pregunto a alguien por qué un proceso Java que básicamente actúa como un servicio web basado en i / o sobre una cola de mensajes y una base de datos necesita 32 GB de memoria de servidor dedicada. Este tipo de desarrollo e hinchazón engendra algunos de los desencantos entre las empresas más pequeñas y las nuevas empresas. Claramente hay algunas personas que creen que el grado empresarial significa que un proceso debe comer RAM como un hombre hambriento en un banquete. Por otro lado, hay otros que creen que si no prefieres Java y su IDE, de alguna manera eres un novato o un inexperto. Extraño. Claro, hay desarrolladores y equipos asombrosos que crean un software Java muy eficiente, conciso y de vanguardia, pero la noción actual es que las grandes franjas de desarrollo de Java en muchas grandes corporaciones son solo un proceso lento de iteración de fábricas de clase.

Terminaré diciendo que algunas personas realmente aman el idioma, otras son indiferentes y al resto no les gusta. Bastante estándar para todos los idiomas en el libro, no lo tomaría demasiado en serio.

Si se pasea por el patio de la escuela, escuchará a los niños hablar sobre conducir un Corvette Stingray o un Austin Mini. Pero cuando llega el momento de conseguir trabajo, si quieren hacer entregas con sus autos, no se les pagará mucho para entregar las pizzas. Así que si quieren que la conducción sea una carrera …

Java es como un gran camión tractor Peterbuilt. Puede conectarlo a casi cualquier cosa, maneja cargas pesadas, se mantiene funcionando por siempre sin necesidad de mucho mantenimiento, es definitivamente una fuerza industrial y es relativamente económico … considerando todo.

Por supuesto que no es glamoroso. No lo llamaría fácil de manejar y requiere de mayor precaución y entrenamiento. La mayoría de la gente prefiere conducir un Ferrari o al menos un 4 ruedas.

Pero las compañías que realizan envíos casi siempre prefieren el camión grande en lugar de un pequeño automóvil deportivo. E incluso los conductores de camiones, que preferirían conducir, al menos, un Buick, admitirán que el tractor grande es la herramienta adecuada para el trabajo.

Creo que otros lo han cubierto. Java es un lenguaje corporativo antiguo. Estuve en una de las primeras clases de entrenamiento de Sun para Java en el campus de Sun fuera de Boston. Estaba lleno de viejos tipos de corporaciones que fueron recapacitados en un nuevo idioma. Tenía 19 años (o algo así) y había una palpable desconfianza de por qué estaba allí.

El lenguaje en los 20 años intermedios se mantuvo en gran medida en las grandes corporaciones. Además, se realizó un gran trabajo empresarial con él, para ello, y con herramientas y ecosistemas.

El error no es pensar que Java es un lenguaje corporativo antiguo, sino pensar que eso significa que es malo. El lenguaje es bueno y debe evaluarse en función de sus capacidades, no de su historial, si está siendo pragmático.

La contratación es el área donde la historia puede impactar las cosas. Los empleados de grandes empresas pueden no realizar lo mismo en otros entornos. En otras palabras, la base de instalación / uso del idioma puede afectar al grupo de talentos más que el idioma.

Es un “lenguaje corporativo antiguo”. Es el estándar de la empresa, y no hay nada de malo en eso. Java es maduro, sólido, práctico, útil.

Pero Java también es de vanguardia, ya que se utiliza para el desarrollo móvil (Android), Internet of Things, cloud computing, etc. ¡Puedes enseñarle muchos trucos nuevos a este perro viejo!

Curioso, cuando Java salió por primera vez hace 20 años, estaba en la mitad de mi carrera. ¡Veinte años no es tanto tiempo para mí! Ahora, la gente está llamando Java antiguo. Dios mío.

Es. Me encanta java Pero bien podría llamarlo lo que es. No es COBOL o PASCAL, pero es un lenguaje de programación antiguo, muy corporativo (aunque de alto nivel) .

Simplemente no veo nada inherentemente mal con eso.

Probablemente porque es un lenguaje de programación corporativo antiguo. Sin embargo, la gente no se da cuenta de que todavía vive tan fuerte como lo fue en el pasado. Java es tan fuerte hoy como C, y también es un lenguaje de programación corporativo antiguo.

re