Es Java tan "bueno" como lo quieren pintar?
Hola a todos,
No pretendo con esta pregunta llevar la contraria a nadie pero me acabo de introducir de golpe (por motivos profesionales) en el mun de Java y la verdad, no creo que sea tan bueno como lo pintan, sobre todo en algunos aspectos.
He programado en C/C++, Pascal/Delphi, VB y VB.NET, PHP... y el aprendizaje y posterior desarrollo de estes lengujes me ha resultado relativamente "fácil".
En cuanto me metí en java me encontre con un lenguaje muy incómodo. A la hora de hacer aplicaciones en modo consola sólo hay que ver lo que es necesario hacer para leer un String desde la éntrada estándar. Realizar entornos Gráficos (GUIs con swing o awt) es casi una odisea. Tengo que explorar todavía los servlets así que ahí no me voy a meter.
Pero lo dicho, no creo que sea tan buen lenguaje como lo presentan. Cierto que el soporte multiplataforma es algo a destacar pero creo que hoy en día tampoco es algo que a la hora de la verdad tenga tanta importancia (la migración de sistemas no se efectúa a menudo) dado el número de aplicaciones que hay para multiples plataformas. Además que tener que depender de un intérprete (JVM) aunque no és algo crítico tampoco lo veo cómodo.
Sólo es una opinión y respeto alos que defiende java a capa y espada, de veras. Sólo quiero saber otras opiniones para saber si soy yo el único que no lo ve como la panacea de la programación que algunos pretenden mostrar.
Un Saludo.
No pretendo con esta pregunta llevar la contraria a nadie pero me acabo de introducir de golpe (por motivos profesionales) en el mun de Java y la verdad, no creo que sea tan bueno como lo pintan, sobre todo en algunos aspectos.
He programado en C/C++, Pascal/Delphi, VB y VB.NET, PHP... y el aprendizaje y posterior desarrollo de estes lengujes me ha resultado relativamente "fácil".
En cuanto me metí en java me encontre con un lenguaje muy incómodo. A la hora de hacer aplicaciones en modo consola sólo hay que ver lo que es necesario hacer para leer un String desde la éntrada estándar. Realizar entornos Gráficos (GUIs con swing o awt) es casi una odisea. Tengo que explorar todavía los servlets así que ahí no me voy a meter.
Pero lo dicho, no creo que sea tan buen lenguaje como lo presentan. Cierto que el soporte multiplataforma es algo a destacar pero creo que hoy en día tampoco es algo que a la hora de la verdad tenga tanta importancia (la migración de sistemas no se efectúa a menudo) dado el número de aplicaciones que hay para multiples plataformas. Además que tener que depender de un intérprete (JVM) aunque no és algo crítico tampoco lo veo cómodo.
Sólo es una opinión y respeto alos que defiende java a capa y espada, de veras. Sólo quiero saber otras opiniones para saber si soy yo el único que no lo ve como la panacea de la programación que algunos pretenden mostrar.
Un Saludo.
Que conste que todo lo que voy a decir es únicamente mi apreciación personal. :-)
<<me encontre con un lenguaje muy incómodo>>
Más que incómodo, es algo trabajoso. Para hacer ciertas cosas aparentemente sencillas tienes que hacer otras muchas cosas. Lo que pasa es que es tan trabajoso porque es bastante flexible. También puede resultarte incómodo lo estricto del lenguaje, pero puede que más adelante caigas en la cuenta de que eso precisamente es lo que evita que tus programas tengan tantos errores como en otros lenguajes.
<<sólo hay que ver lo que es necesario hacer para leer un String desde la éntrada estándar>>
Sé a qué te refieres, el tener que envolver el System.in en un InputStreamReader y eso a su vez en un BufferedReader es trabajoso, pero por otra parte extremadamente flexible. El paquete java.io es complicadillo, pero te permite hacer montones de combinaciones entre sus clases. Es cuestión de sopesar qué te interesa más, si la flexibilidad o la sencillez.
<<Realizar entornos Gráficos (GUIs con swing o awt) es casi una odisea.>>
Ahí sí que no tengo nada que objetar. Eso de manejar distintos administradores de diseño para construir la ventana se ha arreglado de forma bastante elegante en Windows Forms de .NET, con las propiedades Dock y Anchor. La verdad es que hacer interfaces de usuario en Java (sin usar JBuilder ni nada de eso) es complicado. Tanto es así que mucha gente prefiere usar Jython (una implementación de Python para la JVM) para hacer las interfaces de usuario más fácilmente, y dejan Java para el resto.
<<la migración de sistemas no se efectúa a menudo>>
La portabilidad de Java no trata específicamente de facilitar las migraciones, sino de facilitar la distribución. Se trata de compilar el programa una vez y poder instalarlo y usarlo en cualquier sistema que disponga del JRE. Y que funcione exactamente igual en cualquiera de esos sistemas.
<<Además que tener que depender de un intérprete (JVM) aunque no és algo crítico tampoco lo veo cómodo.>>
En ese caso la tecnología .NET tampoco es tan buena, porque hace exactamente lo mismo. Las dos tecnologías constan de una máquina virtual (Java Virtual Machine en Java y Common Language Runtime en .NET) y de unos programas semicompilados a un código intermedio (llamado bytecode en Java y MSIL en .NET). Tendrás que admitir entonces que VB.NET tampoco es un lenguaje cómodo, porque necesita el .NET Runtime para funcionar. Igual pasa con C# con más razón, porque se parece un montón a Java.
<<saber si soy yo el único que no lo ve como la panacea de la programación>>
No eres el único. Yo también creo que Java y .NET no son la panacea de la programación, por mucho que nos intenten convencer de lo contrario. Java por su parte, en mi opinión, es un muy buen lenguaje, que funciona estupendamente sobre todo en aplicaciones de servidor. Además es estable y también evita muchos errores en el código gracias a ser muy estricto, pero su flexibilidad se paga a base de complicaciones. Y .NET es un calco de Java con algunas mejoras y simplificaciones que le faltaban a éste.
Simplemente no hay un lenguaje bueno para TODO. Java es muy bueno para unas cosas, Perl para otras, PHP para otras, Python para otras, y así sucesivamente.
Pero vamos, Java no es lo único que sólo conoce halagos, tampoco XML es la panacea y está todo el mundo con XML que no caga. XML está muy bien para ciertas cosas y es lo justamente indicado para otras, pero para muchos problemas simplemente no es una solución útil. No es lógico el meterle XML a todo con calzador.
En definitiva, que Java te tiene que entrar por el ojo. Si te causa buena impresión, pensarás en Java como en la mejor tecnología en el mundillo. Si no, no querrás verlo ni en pintura.
<<me encontre con un lenguaje muy incómodo>>
Más que incómodo, es algo trabajoso. Para hacer ciertas cosas aparentemente sencillas tienes que hacer otras muchas cosas. Lo que pasa es que es tan trabajoso porque es bastante flexible. También puede resultarte incómodo lo estricto del lenguaje, pero puede que más adelante caigas en la cuenta de que eso precisamente es lo que evita que tus programas tengan tantos errores como en otros lenguajes.
<<sólo hay que ver lo que es necesario hacer para leer un String desde la éntrada estándar>>
Sé a qué te refieres, el tener que envolver el System.in en un InputStreamReader y eso a su vez en un BufferedReader es trabajoso, pero por otra parte extremadamente flexible. El paquete java.io es complicadillo, pero te permite hacer montones de combinaciones entre sus clases. Es cuestión de sopesar qué te interesa más, si la flexibilidad o la sencillez.
<<Realizar entornos Gráficos (GUIs con swing o awt) es casi una odisea.>>
Ahí sí que no tengo nada que objetar. Eso de manejar distintos administradores de diseño para construir la ventana se ha arreglado de forma bastante elegante en Windows Forms de .NET, con las propiedades Dock y Anchor. La verdad es que hacer interfaces de usuario en Java (sin usar JBuilder ni nada de eso) es complicado. Tanto es así que mucha gente prefiere usar Jython (una implementación de Python para la JVM) para hacer las interfaces de usuario más fácilmente, y dejan Java para el resto.
<<la migración de sistemas no se efectúa a menudo>>
La portabilidad de Java no trata específicamente de facilitar las migraciones, sino de facilitar la distribución. Se trata de compilar el programa una vez y poder instalarlo y usarlo en cualquier sistema que disponga del JRE. Y que funcione exactamente igual en cualquiera de esos sistemas.
<<Además que tener que depender de un intérprete (JVM) aunque no és algo crítico tampoco lo veo cómodo.>>
En ese caso la tecnología .NET tampoco es tan buena, porque hace exactamente lo mismo. Las dos tecnologías constan de una máquina virtual (Java Virtual Machine en Java y Common Language Runtime en .NET) y de unos programas semicompilados a un código intermedio (llamado bytecode en Java y MSIL en .NET). Tendrás que admitir entonces que VB.NET tampoco es un lenguaje cómodo, porque necesita el .NET Runtime para funcionar. Igual pasa con C# con más razón, porque se parece un montón a Java.
<<saber si soy yo el único que no lo ve como la panacea de la programación>>
No eres el único. Yo también creo que Java y .NET no son la panacea de la programación, por mucho que nos intenten convencer de lo contrario. Java por su parte, en mi opinión, es un muy buen lenguaje, que funciona estupendamente sobre todo en aplicaciones de servidor. Además es estable y también evita muchos errores en el código gracias a ser muy estricto, pero su flexibilidad se paga a base de complicaciones. Y .NET es un calco de Java con algunas mejoras y simplificaciones que le faltaban a éste.
Simplemente no hay un lenguaje bueno para TODO. Java es muy bueno para unas cosas, Perl para otras, PHP para otras, Python para otras, y así sucesivamente.
Pero vamos, Java no es lo único que sólo conoce halagos, tampoco XML es la panacea y está todo el mundo con XML que no caga. XML está muy bien para ciertas cosas y es lo justamente indicado para otras, pero para muchos problemas simplemente no es una solución útil. No es lógico el meterle XML a todo con calzador.
En definitiva, que Java te tiene que entrar por el ojo. Si te causa buena impresión, pensarás en Java como en la mejor tecnología en el mundillo. Si no, no querrás verlo ni en pintura.
Bien, me sumo a la idea de que ni Java ni .NET son las soluciones que prometen...
personalmente creo que tener una JVM siempre es un dolor de caveza si emulamos por software un hardware virtual... es siempre reduce velocidad y sus veneficios nunca son suficientes para el probelma de la velocidad (en mi experiencia personal)
Tambien creo que si existe un lenguaje en el que todo es pocible (todo lo que una computadora puede hacer) y es la frontera entre el C ensamblador... que esto cueste es otro tema, pero ABSOLUTAMENTE TODO es pocible entre estos dos lenguajes y con un alto grado de portabilidad (siempre que mantengamos el codigo dependiente de la maquina lo mas chico que podamos)
Otra cosa, la idea de compilar una sola vez y ejecutar en varias maquinas no me gusta demaciado... para mi la solucion a la portabilidad ha sido escrivir porgramas en C lo mas "estandarmente" pocible y usando librerias lo mas estandar pocibles (cuando no estan hacer el port correspondiente, que no siempre es facil) y distribuir el codigo fuente con los correspondientes:
./configure (configure.bat)
make
make install
Pues aqui no solo se puede hacer una optimizacion en cuanto a la arquitectura en la que este corriendo sino para la maquina misma en la que este corriendo...
Algo similar queria Microsoft con su CLR pero creo que esto recien se lograra hacer a buena velocidad (al menos si compila cada vez que ejecuta) el dia que saquen el Windows Cuerno Largo (Long Rong o algo asi... pero me parece adecuado el nombre) que va a nesecitar 2Gb de RAM (o eso se comenta jejeje) Creo que le queda vien el nombre de Cuerno Largo...
Bueno, es mi opinion, muy personal por sierto.
personalmente creo que tener una JVM siempre es un dolor de caveza si emulamos por software un hardware virtual... es siempre reduce velocidad y sus veneficios nunca son suficientes para el probelma de la velocidad (en mi experiencia personal)
Tambien creo que si existe un lenguaje en el que todo es pocible (todo lo que una computadora puede hacer) y es la frontera entre el C ensamblador... que esto cueste es otro tema, pero ABSOLUTAMENTE TODO es pocible entre estos dos lenguajes y con un alto grado de portabilidad (siempre que mantengamos el codigo dependiente de la maquina lo mas chico que podamos)
Otra cosa, la idea de compilar una sola vez y ejecutar en varias maquinas no me gusta demaciado... para mi la solucion a la portabilidad ha sido escrivir porgramas en C lo mas "estandarmente" pocible y usando librerias lo mas estandar pocibles (cuando no estan hacer el port correspondiente, que no siempre es facil) y distribuir el codigo fuente con los correspondientes:
./configure (configure.bat)
make
make install
Pues aqui no solo se puede hacer una optimizacion en cuanto a la arquitectura en la que este corriendo sino para la maquina misma en la que este corriendo...
Algo similar queria Microsoft con su CLR pero creo que esto recien se lograra hacer a buena velocidad (al menos si compila cada vez que ejecuta) el dia que saquen el Windows Cuerno Largo (Long Rong o algo asi... pero me parece adecuado el nombre) que va a nesecitar 2Gb de RAM (o eso se comenta jejeje) Creo que le queda vien el nombre de Cuerno Largo...
Bueno, es mi opinion, muy personal por sierto.