JEE, JSP, Hibernate y Spring.

kraneok

Que tal amigos. Resulta que voy a comenzar a darle a estas tecnologías y frameworks.
Hibernate y Spring por que simplifican bastante el trabajo en JEE y ORM y además por que estoy viendo que en las empresas se requieren no mucho, si no muchísimo y JEE es obvio por que..

Pero antes me gustaría hacer unas preguntas, ya que por mas que leo no entiendo algunas cosas:

¿ Que tiene JSP que no tenga PHP u otro lenguaje de lado servidor ?
¿ Es recomendable empezar a estudiarlo y utilizarlo?
¿ JSP forma parte de JEE, JEE es mas una metodología de trabajo por capas ?
¿ Que relación guarda JSP con JEE ?
¿ Es muy usado JEE, e Hibernate y Spring ?
¿ Cuando es recomendable utilizar un lenguaje script u otro compilado dentro de una web como lo es Java ?
He leído que aunque Java nació para la web ha ido siendo desbancado por otros lenguajes como PHP por ejemplo.
¿ Debería seguir involucrado en estudiar PHP y algunos otros lenguajes como .ASP ?

Estas pregunta se me escapan del Google, no logro llegar a obtener las respuestas.
Si alguien puede ir despejándome dudas acerca de esto se lo agradecería mucho.

Un saludo.

1
Spacelord

Relevant to my interests. Me pongo esto en favoritos.

ninjachu

¿ Que tiene JSP que no tenga PHP u otro lenguaje de lado servidor ?
Que es java
¿ Es recomendable empezar a estudiarlo y utilizarlo?
Para gusto los colores
¿ JSP forma parte de JEE, JEE es mas una metodología de trabajo por capas ?
Indirectamente si forma parte. JEE trabaja por capas en su standard
¿ Que relación guarda JSP con JEE ?
Que puede ser utilizado para su desarrollo
¿ Es muy usado JEE, e Hibernate y Spring ?
Bastante, según que compañia.
¿ Cuando es recomendable utilizar un lenguaje script u otro compilado dentro de una web como lo es Java ?
Umm.. técnicamente velocidad de cliente vs velocidad del servidor y la red. En teoría mayor potencial y centralización de las peticiones. Además de trabajo con servidores de servicios.
He leído que aunque Java nació para la web ha ido siendo desbancado por otros lenguajes como PHP por ejemplo.
¿ Debería seguir involucrado en estudiar PHP y algunos otros lenguajes como .ASP ?
A más conocimientos mejor. Aunque lo suyo es dominar al menos uno.

bLero

¿ Que tiene JSP que no tenga PHP u otro lenguaje de lado servidor ?

No tiene nada más que el resto.

¿ Es recomendable empezar a estudiarlo y utilizarlo?

Sí, sólo hay que mirar las ofertas de trabajo, donde casi la mitad son para desarrollo con JEE.

¿ JSP forma parte de JEE, JEE es mas una metodología de trabajo por capas ?

Eso es, la idea de JEE es trabajar con el patrón layers (capas).

¿ Que relación guarda JSP con JEE ?

Con JSP podemos inyectar código Java en las vistas de la aplicación (HTMLs). Como PHP pero en este caso utilizando Java.

¿ Es muy usado JEE, e Hibernate y Spring ?

Muchísimo. Spring y Struts 2 para la capa de presentación pues permiten la inyección de dependencias, se basan en el patrón MVC e incluyen sistemas para facilitar la validación de formularios, i18n, autentificación, etc.

Hibernate y JPA para la persistencia de datos.

¿ Cuando es recomendable utilizar un lenguaje script u otro compilado dentro de una web como lo es Java ?

Yo creo que JEE sólo debería usarse en aplicaciones de negocio grandes o relacionadas con los servicios web.

Digo esto porque por lo general los servidores de aplicaciones JEE son bastante pesados y consumen muchos recursos, y muchas veces con PHP interpretado en el servidor nos sobra.

¿ Debería seguir involucrado en estudiar PHP y algunos otros lenguajes como .ASP ?

PHP es necesario, ASP pues es la alternativa de microsoft a JEE, así que yo me especializaría en uno de los 2.
1 respuesta
zoeshadow

Ampliando a #4:

¿ Que relación guarda JSP con JEE ?

Hoy en dia JSP se utiliza como lenguaje de "templating", es decir para hacer lo que sería la vista del patron MVC.

¿ Debería seguir involucrado en estudiar PHP y algunos otros lenguajes como .ASP ?

PHP y JEE fueron creados con propósitos diferentes, aunque ahora mismo los últimos frameworks PHP cada vez se están volviendo mas grandes y completos, cogiendo lo mejor de otros frameworks como Spring y Ruby.

A nivel de programación, la mayoría de las cosas que te puede ofrecer JEE/Spring las puedes encontrar en PHP ( Symfony ), Django y Rails, lo que hace JEE distinto y atractivo a las grandes empresas es el ecosistema que hay alrededor.

Empresas como Oracle, Jboss y muchas otras han invertido mucho dinero en hacer soluciones para los problemas habituales, que son seguras y están muy testeadas.

Partes importantes de la aplicación como los servidores, contenedores de aplicación, soporte, servidores de mensajería.. son los que hacen que las empresas se decanten por JEE.

Yo creo que la creencia de que JEE son bastante pesados es una cosa que se ha ido arrastrando desde las versiones antiguas, pero que ya no es del todo cierto, se ha demostrado que el rendimiento de diversos frameworks Java es bastante bueno comparado con otros frameworks de lenguajes no compilados.

Normalmente el principal problema es la velocidad de desarrollo, en lenguajes como PHP, Ruby y Python la velocidad de desarrollo es MUCHO mayor que en lenguajes como Java, y es por ello por lo que frameworks como Ruby on Rails y Symfony han triunfado tanto en la comunidad, hoy en dia en el mundo de internet el tiempo en el que llevas el producto al mercado es lo que diferencia un producto exitoso de uno fallido.

Sin embargo, la velocidad de desarrollo en empresas grandes no es tan importante como la facilidad de mantenimiento de las aplicaciones, el soporte oficial para las herramientas, o el ecosistema de herramientas maduras, por ejemplo.

RPV: Java seguro, estable y tiene buen ecosistema y los lenguajes de scripting son mas rápidos para desarrollar, no hay uno mejor que otro, son distintos, usa el que mas te convenga.

MTX_Anubis

He leído que aunque Java nació para la web ha ido siendo desbancado por otros lenguajes como PHP por ejemplo.

Wait wat?

Java es un lenguaje que nació para programar lavadoras y microondas, como era un truño que nadie compraba lo "liberaron" (je). J2EE no es la plataforma WEB como tal sino distribuida, algo distinto es que se use para cualquier cosa sobre lo que no estaba pensado xD

Y PHP hació antes o por la misma época que J2EE si no recuerdo mal además de haber sido siempre más usado xD

1
Kiroushi

Espero no ser el único al que Java le da un tremendo asco.

1
kraneok

Bueno ya todo va quedando mas claro, muchas gracias a todos y seguir leyendo mas acerca del tema y por supuesto que ya estoy dándole un poco a ver como tira. Personalmente siendo programagor Java de mas de 2 año era un poco reacio a utilizar Java en la web, pero ahora le estoy viendo la punta al iceberg.

B

Pues a mí Java me parece la rehostia comparado con, por ejemplo, PHP, que me parece la mayor basura del mundo xD

#10: Eso puedo aceptarlo :ninjaedit:

1 1 respuesta
elkaoD

#9 ambos son basura.

2 respuestas
kraneok

#10 Cuando leo a alguien decir esas cosas me gustaría conocer el por qué de esas afirmaciones.
¿ Podrías por favor comentarme por qué crees que Java es una basura y PHP ?, no lo pregunto en tono vacilante, muy contrariamente, lo pido de verdad.
Un saludo.

1 respuesta
elkaoD

#11 obviamente es mi opinión pero ya que la pides pues suelto el TL;DR xD

Empiezo con PHP que es más fácil echar mierda:

  • Es un parche sobre un parche sobre un parche sobre un parche.

  • Hasta hace dos días no había clases y ahora que las hay no se usan bien (porque el lenguaje está contaminado al ser retro-compatible en gran medida).

  • La API es un orto y hereda la mierdez de no tener namespaces/clases (API imperativa total).

  • El naming de la API es inconsistente, el paso de argumentos es inconsistente, los resultados de la API son inconsistentes.

  • Tiene una arquitectura monolítica, impensable para mí ahora mismo en desarrollo web.

  • Hasta hace dos días no había closures, y ahora que las hay son un orto.

  • Verbose de forma innecesaria.

  • El reporting de errores es la peste (no pensé que diría esto pero... stacktraces please!)

  • El == está roto como en JavaScript.

  • La sintaxis es inconsistente.

  • Las funciones de argumentos variables son un horror. No hay splats (...) ni argumentos por nombre, ni acceso al array de argumentos para tratarlo como un array normal.

  • Hasta hace dos días foo()[0] era un error de sintaxis (hola MATLAB, a ti también te estoy mirando).

  • Diferencia entre error y excepción. En PHP no puedes "catchear" un error y tampoco puedes cazar excepciones en un handler de errores (ni siquiera las "uncaught" ).

  • No es más que un CGI y se han tenido que hacer mil apaños con cacheos/compilaciones (véase HipHop de Facebook).

De Java reconozco que soy un semi-hater. La JVM está muy bien (excepto por los horribles bugs de seguridad que pueblan, habla con BLZKZ), la librería estándar es la polla (aunque algo "clunky" de usar) y reconozco que el lenguaje tiene sus casos de uso. Los grandes problemas de Java:

  • Verbose a saco. Cualquier mierda requiere millones de lineas de código.

  • El sistema de build es la peste, y ni siquiera tiene un sistema de paquetes decente (¿Ant?, ¿Maven?... los cojones).

  • No tiene closures (vendrán en Java 8). ¡Las closures de <= Java 7 solo se puede realizar sobre atributos final!

  • No tiene funciones de alto orden como map, reduce, etc. (vienen en Java 8)

  • El tipado es gñé cuando has probado la inferencia de tipos de Scala por ejemplo.

  • No tiene mixins ni herencia múltiple así que estás vendido.

  • No permite interfaces con miembros privados ni campos.

  • No tiene sintaxis para arrays inline.

  • JDBC, el mayor orto para "interfacear" con BBDD.

  • Swing está roto y cualquier programa que se precie usa otros toolkits (¿alguna vez habéis intentado hacer una interfaz resizeable sin usar Layouts mierdosos?).

  • El tipado de los genéricos se borra al compilar, así que un método "example" de signatura "example(List<String> argumento)" no puede ser sobrecargado con "example(List<Boolean> argumento)", por ejemplo (al compilar ambos quedan con signatura "example(List argumento)", se pierden los genéricos).

  • El modelo de locking... ¡no sé por dónde empezar! TODO objeto en la JVM tiene incluido un sistema de locking, lo uses o no (¿cuándo fue la última vez que usas synchronize?) Los monitores están muertos. Nadie usa monitores en 2013. Es una forma rota de hacer concurrencia.

  • Hacer getters y setters es la peste. C# y Scala cogen mejor el concepto.

¿Las cosas buenas de Java? Un buen sistema de debugging, y que cualquier lisensiado pueda manejarse en un codebase amplio sin mucho esfuerzo. Para mí Java es un lenguaje "industrial". Es el UML de los lenguajes.

Y todo esto sin pensar. Si me pongo a pensar saco más mierda xD Todo lenguaje tiene sus cosas buenas/malas, pero para mi PHP y Java se llevan la palma. A ambos les pesan los años, especialmente a PHP por lo de ser un parche sobre un parche.

EDIT: aquí más razones por las que PHP apesta, http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ No os lo perdáis, hay alguna muy gorda que hasta a los experimentados en PHP le va a sorprender.

Por ejemplo, ¿qué cojones hace esto en PHP?:

http://php.net/manual/es/book.mcve.php
http://php.net/manual/es/book.spplus.php

EDIT2: y más mierda aún en PHP Sadness.

1 3 respuestas
zoeshadow

En defensa de PHP diré que es facil y rapido de aprender para gente sin ningún tipo de conocimientos de programación, lo cual ha sido un arma de doble filo para ellos, pero tambien ha traído cosas muy buenas, aunque muchos de aquí no estareis de acuerdo.

Y ha sido el lenguaje mas sencillo/barato para hacer deploy hasta hace bien poco, aunque en este aspecto se han puesto al dia e incluso superado algunos lenguajes.

Aparte la comunidad está mejorando mucho, están intentando poner PHP al dia como lenguaje y las herramientas/frameworks que están apareciendo ultimamente parecen estar al nivel de los de otros lenguajes.

Una pena que no hayan tenido huevos y hubiesen roto con el pasado en PHP5, porque la API antigua en su mayor parte da bastante asco, sobre todo el naming/falta de consistencia.

1 1 respuesta
elkaoD

#13 yo mismo aprendí PHP de mis primeros lenguajes (allá por PHP3, con eso digo todo...)

Lo de los deploys... sinceramente, ahora PHP se ha quedado muy atrás en el tema. Si tienes que manejar dependencias a mano... malo, malo. Compara esto con Node.js por ejemplo, que defines un meta-fichero "package.json", ejecutas "npm install" y ya se te hace el deploy completo. Si PHP ha sido fácil de "deployear" es porque estaba en casi cualquier webhost y por su filosofía backwards-compatible, que hace que no se rompa todo muy rápido. Ahora con el tema cloud (véase Heroku) el deploy con otros lenguajes es millones de veces más sano.

En realidad si lo piensas el deploy en PHP es un infierno. En webhosts compartidos un sólo fichero "php.ini" controla el comportamiento del lenguaje de formas inimaginables para cientos de webs. SUERTE xD Y... ¿has probado alguna vez a usar PHP sin Apache? ¿Has tenido que tener en el mismo host aplicaciones con distintas dependencias?

Si fuera solo la API... El problema de PHP es que está roto de base y hay que hacerlo desde los cimientos. Literalmente. Sin exagerar. Ni comunidad ni leches. Hay que hacerlo desde cero.

Tienen que repensarse desde el (inexistente) sistema de módulos hasta el manejo de Unicode (suerte con Unicode en PHP), dar consistencia al lenguaje (no sólo API: sintaxis, errores)...

Para que veas cuánta mierda arrastran, explícame esto xD (fíjate que es la URL del índice de la Wikipedia)

http://en.wikipedia.org/w/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://en.wikipedia.org/w/index.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://en.wikipedia.org/w/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

1 respuesta
zoeshadow

#14 En cuanto a lo del deploy, es cierto que se ha quedado atras, pero para proyectos pequeños sigue siendo el rey.

Si es cierto que ahora cualquier proyecto serio ya usa un sistema de packaging/dependencias y un Sistema de Control de Versiones lo que hace el deploy mucho mas facil y automatizado, y en ese sentido casi todos los lenguajes están a la par.

En cuanto a lo de las dependencias, PHP tiene Pear y Composer, yo he usado Composer y va bastante bien, ha cogido todo lo bueno que tenian las gemas de Ruby y le ha añadido un par de detalles ( autoloading ).

Pero vamos, que cualquiera que haya usado PHP para un proyecto medio serio se habrá encontrado con mucha de la mierda que arrastra PHP, al menos los frameworks la hacen tolerable para la mayoría.

Lo de los links? DAFUQ? xDDD

1 respuesta
elkaoD

#15 bueno es de conocer Pear/Composer. Nunca se sabe cuándo te vas a tener que pegar con PHP :P

Lo malo es lo de siempre: ¡esto debería ser parte del toolset lenguaje! Pocos lenguajes lo hacen bien en este sentido (aquí fallan hasta Python/Ruby, mención especial a EasyInstall de Python).

kraneok

#12 ¿ Entonces cuando piensas que deberíamos utilizar PHP para web ? ¿ para comenzar a tocar algo en principio ?, ¿ o Java para cualquier cosa ?, ¿ cuando deberíamos comenzar a pasarnos a otros lenguajes ?
De Java a C# ?
De PHP a ASP, a...?

Creía que PHP quería heredar "algo" de C, lenguaje, personalmente de los mas bonitos que existen.

Todos los fallos que expones afectan mas a la hora de desarrollar una aplicación supongo, ¿ no ?, ¿ o se ve reflejado en la vida de la aplicación cuando esta ya esté en funcionamiento o ambos?

1 respuesta
elkaoD

#17 tu primer párrafo es básicamente cuestión personal. Pilla el lenguaje que sea y cuando le veas fallos pilla otro, y cuando le veas fallos otro, y... así hasta que encuentres tu lenguaje. Yo he probado un montón y a todo le saco fallos y cosas buenas, pero no podría apreciarlas si no tuviera esa "visión global".

En cuanto a cuándo pasarte a otros lenguajes... no sé, está bien conocer de todo. Nada te impide tener PHP/Java como lenguaje primario e ir "picoteando" otros lenguajes.

C es bonito, pero hoy en día poco útil. Estamos en 2013 y tenemos maquinones.

Los fallos afectan a todos los niveles: desarrollo (más largo/más incómodo), bugs que se cuelan (más tiempo de mantenimiento), casos extraños...

Para que te hagas una idea, un punto de inflexión que tuve hará año y pico: http://www.mediavida.com/foro/dev/programacion-que-hago-ahora-439435

Kiroushi

#12 ¿Hola? Que PHP no tiene catch de errores? Que no hay namespaces?

No sé si estás hablando de PHP 0.7, pero bueno. A lo tuyo.

1 respuesta
elkaoD

#19 te invito a leer las razones detenidamente.

La API se está namespaceando deprecando APIs antiguas pero aún hay caca suelta por ahí a lo C.

Lo del catch de errores no digo que no haya, sino que no cae en los try-catch (no es una excepción, es un error y pasa por un handler externo).

¿Alguna pega más?

Tengo para todos, ¿eh? No te creas que sólo para Java y PHP, también para mis lenguajes favoritos :)

B

#12: Te doy la razón en todo lo que has dicho. Y teniendo eso en mente, ya te digo que Java me parece mil veces mejor que PHP.

Y maven mola xD

El principal pero (para mí) de Java es quién lo usa y que es demasiado verbose. También se echan en falta varias cosas como las que tu comentas.

Lo que tengo ganas de probar es Groovy, no sé qué tal estará.

#23: Es bastante rancio sí xDD

1 respuesta
bLero

#21 uffff pues a mi maven me parece una auténtica bazofia. Prefiero ant 1000 veces antes, y eso que tampoco me acaba de convencer.

Spacelord

Yo insisto en que el 95% de los comentarios de "vaya mierda es X lenguaje" vienen determinadas por haber intentado hacer cosas para las que no se diseñó ese lenguaje. Cualquiera que aprenda Java para usarlo en web lo odiará para siempre y pensará que es una mierda, por ejemplo.

1 respuesta
kraneok

Lo bueno de Java, por lo menos desde mi punto de vista es que haces cualquier cosa bastante fácil, ya que tiene gran variedad de librerías que te ayudan a todo lo que quieras.

Usuarios habituales