2010-02-06 15 views
41

He estado haciendo desarrollo de aplicaciones web durante los últimos 3 años en PHP. Ahora estoy a punto de darle una oportunidad a Java. Mi último uso del lenguaje fue hace casi 8 años y era principalmente académico.De PHP a Java. ¿Algún consejo?

Estoy razonablemente bien familiarizado con el modelo de objetos de PHP (versión 5) y yo casi exclusivamente estado de codificación en OO. Ahora me gustaría transportar esa experiencia y usarla para desarrollar en Java.

Dónde estoy procedentes de:

  • Linux como un ordenador de sobremesa y el servidor
  • Vim gVim +/plugins como editor
  • MySQL para db
  • Apache httpd
  • experiencia con un montón de frameworks PHP, siendo Zend + Doctrine los que más uso

Lo que he obtenido hasta ahora acerca de un movimiento para Java:

  • Necesito un IDE: IntelliJ IDEA, NetBeans o Eclipse
  • tengo que elegir un marco de desarrollo. Algunos nombres recurrentes: Spring MVC, stripes, wicket.

Ahora necesito una idea que podría ayudar a hacer esta transición más fluida. Pero por la forma en que la gente habla de eso, Java parece ser una bestia completamente nueva con su propio ecosistema. Parece que cambiarse a Ruby o Python sería más fácil, lo que es curioso ya que, cuando lo miro, Java conceptualmente parece ser lo más parecido a PHP, aunque más estricto y precompilado.

Por extraño que pueda parecer, muy pocas personas han documentado públicamente su experiencia de tales movimientos. He buscado en google, amazon y stackoverflow preguntas similares y los resultados me dejan desear. Simplemente no puedo creer que necesite comenzar igual que un novato si quisiera ser productivo como desarrollador web en Java rápido.

Cualquiera es bienvenido para responder, pero de alguna manera creo que las personas con alguna experiencia valiosa en ambos idiomas enriquecerían esta discusión más.

  • ¿Qué le ayudó a ponerse en marcha rápidamente en Java?
  • ¿Qué conceptos están omnipresentes en Java y ausentes de PHP y viceversa?
  • Algunos errores para los desarrolladores de PHP que van a Java.
  • ¿Cuánto tiempo antes de que sintiera que la transición se había completado?
+0

Utilicé NetBeans brevemente y luego terminé usando Eclipse porque esto es lo que usaron en la conferencia de la escuela. Primero conoce los conceptos básicos leyendo un libro. Crear sus propias cosas en Java es más rápido (leer el tutorial de Java Sun cuando sea necesario y preguntar en SO). Me llevó aproximadamente 1,5 años (pero no tenía experiencia previa en OOP, solo secuencias de comandos menores en php, sitios web de LAMP). Supongo que Eclipse IDE también mejoró el proceso de aprendizaje, aprender las teclas de método abreviado lo hace aún mejor. – KJW

+0

@mike 7 años después, ¿esa transición fue bien? ¿Lo sugerirías a alguien más? – LePhleg

+1

@LePhleg 7 años después, la respuesta sería "depende de lo que busques". En mi opinión, para guiar a un desarrollador en ciernes hacia los lenguajes de buenas prácticas, como Java o Python, está mejor equipado, debido a su comunidad y herramientas más maduras. PHP tiene una baja barrera de entrada que se traduce en una amplia selección de candidatos para empleadores y una amplia selección de trabajos para candidatos. Para mí, perfeccionar mi oficio era más valioso que la perspectiva a corto plazo de trabajos fácilmente accesibles. El ecosistema de PHP podría haber cambiado completamente hoy en día, por lo que mi punto puede ser discutible. –

Respuesta

20

No trataría de aprender un IDE al mismo tiempo que aprendía un idioma. Una transición más sencilla sería la de mantenerse dentro de su concha y editor de texto habitual, y el uso de las siguientes herramientas de concha-amigable:

  • hormiga, para la organización de su proyecto, ejecución de pruebas automatizados, compilaciones incrementales
  • BeanShell para interactivo probando, probando cosas rápidamente
  • Un truco rápido: javap de la línea de comandos dará firmas de métodos para cualquier clase en la biblioteca estándar. Similar a php -r pero proporciona más información desde que se tipea Java.

La documentación en línea de Java es precisa, profesional, y consistente en tono y formato. A diferencia de PHP, donde todas las funciones están en un espacio de nombre plano, las bibliotecas estándar en Java son jerarquías de clase.Debes conocer bien la biblioteca estándar, lo que significa que debes saber jerarquías + responsabilidades: por ejemplo, debes saber que java.util.List es una subinterfaz de java.util.Collection con la adición de un concepto de entradas ordenadas. Con esa información en tu cabeza, una búsqueda en google de java.util.List te llevará al Javadoc para la clase, y el Javadoc te dirá las firmas de método exactas y te vinculará con una selección de implementaciones concretas.

Algunas distinciones diversos:

  • cadenas son secuencias de caracteres en lugar de secuencias de bytes. Absolutamente la forma correcta de hacerlo.
  • Los sistemas producen y consumen flujos (de bytes o caracteres) en lugar de búferes de bytes. Por ejemplo, si desea filtrar el resultado en PHP, una práctica estándar es pedir ob_get_contents para un búfer de bytes y luego transformar todo el búfer. En Java, agrega un filtro a su servlet que transforma el resultado en un byte o carácter a la vez. Es un poco imponente trabajar con él inicialmente, pero es más simple y más parecido a Lego cuando te acostumbras; el procesador de tu flujo no tiene que saber de dónde vienen las cosas ni a dónde van.
  • Casi todo lo útil es una interfaz, y la creación de una instancia de una interfaz puede ser complicada, no estandarizada y no siempre bien documentada. En PHP, puede comenzar a usar XML con new DOMDocument(). En Java, org.w3c.dom.Document es una interfaz, por lo que new() no funcionará. Javadoc es muy preciso sobre cómo se comportan las instancias de interfaz una vez que aparecen, pero puede ser bastante tímido y mojigatos cuando intenta averiguar cómo nace realmente un objeto. Muy a menudo, tendrá que buscar tutoriales y ejemplos de código y copiar y pegar un trozo de texto que le proporcione una instancia de DOMDocument o java.sql.Connection o lo que sea. Una razón por la cual los frameworks como Spring son populares es porque separan el feo código de creación de objetos y te presentan un mundo en el que las implementaciones de interfaces están mágicamente allí.

En realidad cambié en la dirección opuesta. Descubrí que Java funciona muy bien en una gran empresa en la que podría estar trabajando en un único componente y entregárselo a otra persona que integra ese componente en un sistema más grande, que luego se empaqueta y se entrega a un equipo de operaciones separado, eso es donde toda esta indirección y configurabilidad (FactoryBuilderFactory abstracciones de tipo, archivos web.xml, etc.) tiene sentido y hace algo útil. En una pequeña empresa donde los programadores son el personal de operaciones, Java es mucho más trabajo. Con Java, tendrá que acostumbrarse a conceptos como iniciar el proceso de Java, monitorear el proceso de Java para asegurarse de que no se mueva, monitorear el proceso de Java para asegurarse de que no entre en estado de coma, sino que esté vivo. no responde, apaga y reinicia el proceso de Java con una interrupción mínima cuando está actualizando el código, etc., etc. Si tiene personal de operaciones separado, está bien, es su trabajo, son muy buenos en eso. Si eres programador, cuidar un proceso de Java puede ser una distracción y difícil de hacer bien.

+0

El char de Java es demasiado pequeño. 16 bits no es suficiente para Unicode. Además, existe este nuevo punto de "Código de punto" que aparentemente es necesario para hacerlo correctamente. En otras palabras, la cadena no es suficiente. –

+0

Sí, buen punto. Estrictamente, las cadenas de Java no son secuencias de caracteres, son secuencias de, ¿qué es ... unidades de código UTF16? Los programadores de Java tienen un modelo de caracteres a partir de 1995, cuando se creía que 16 bits eran suficientes. Aún es mejor para la productividad y la integridad de datos que el modelo de caracteres de 1965 con el que los programadores PHP trabajan actualmente. Todavía no investigué el modelo de caracteres PHP6, que según se informa es más compatible con Unicode. –

2

recomiendo golpear a JavaBat en here

que le dará algunas buenas ideas. Me tomó 1 año sólido en un entorno profesional para obtener una comprensión muy firme de Java y he podido moverme a otros lenguajes de OO con bastante facilidad una vez que tuve los pensamientos golpeados en mí.

+0

+1 este es un sitio realmente ingenioso. bookmark'd – KJW

8

Estrictamente hablando, usted no necesita IDE para trabajar en Java. He codificado mucho en Java durante más de una década (y en gran medida en otras cosas durante más de 25 años), y no me gustan mucho los IDEs. Tal vez ese indicador implícito de mi edad sea parte del problema :-) Es una compensación, como cualquier otra cosa.

Voy a conectar Stripes como un buen marco simple, pero sobre todo porque es relativamente pequeño y de alcance limitado. Los grandes frameworks como Spring son ecosistemas de "sumidero de cocina", y aprender Java con uno de esos frameworks puede suavizar algunas de las partes difíciles pero dejar otros aspectos básicos misteriosos. Nuevamente, es una cuestión de preferencia personal.

Es bueno tener a alguien cerca que conozca el idioma. Ah, y hasta ese punto, hazte amigo de la documentación de la API de Java. A medida que avanzan las plataformas, la API de Java tiene sus altibajos, pero en su mayor parte la documentación es al menos bastante minuciosa y bastante precisa.

También querrás familiarizarte mucho con JSP y su relación con las arquitecturas de servicios web de Java y Java, porque eso es lo que más te relacionará con tu experiencia PHP (creo).

+5

No usar un IDE sabiendo sobre el idioma en el que está programando, es perder su propio tiempo y el de su empleador. –

+1

Esa es una cuestión de opinión. Estoy feliz por ti si encuentras un IDE que sea una ayuda para tu productividad. – Pointy

+1

wow no IDE ... eso es toda una declaración. nunca he oído hablar de rayas, lo comprobaré. – KJW

4

El mejor movimiento que hice fue de Java a PHP.

Cuidado con la complejidad. En primer lugar, la clave del gran software es la simplicidad, y es por eso que PHP combinado con un buen framework mata a Java.

Con Java, corre el riesgo de convertirse en esclavo de su contenedor y marco de servlet. Elija el marco más simple y flexible. Los controles y las etiquetas personalizadas son el diablo. Perderá días aprendiendo cosas que fueron diseñadas para acelerar el desarrollo, pero que en última instancia son demasiado complejas e inflexibles. Java ralentizará el desarrollo debido a: complejidad, compilación y tipos estáticos. Llegarás a detestar las excepciones del puntero nulo.

Editar: herramientas a un lado, Java y PHP son lenguajes de estilo "C" muy similarmente estructurados. Mucho más que Python o Ruby. Es el tipado estático y las herramientas complejas que hacen que Java sea tan extraño.

+3

* Chacun à son goût * por supuesto, pero gran parte de lo que usted describe como razones para huir de Java son, para mí, grandes fortalezas y "herramientas eléctricas". Pero sí estoy de acuerdo en que la elección del marco es muy importante, y eso es algo difícil de aconsejar porque es muy subjetivo. – Pointy

+8

La tipificación estática es _la_ calidad que hace posible construir catedrales en Java. En mi opinión. –

+0

@rick, esto realmente no responde a la pregunta ... – Pool

3

Esto parece ser un poco de una entrada antigua, pero bueno ...

que se mudaron de C# a Java y acabo comenzó un papel y voy a mudar de Java a PHP ...

en primer lugar: Java es impresionante :)

  • para su IDE Eclipse llegar, una vez que se acostumbre a ella, que nunca tenga que dejar el IDE (aparte de bits de SQL). Gestiona proyectos muy bien, puede descargar una gran cantidad de complementos, como los complementos SVN.Le permite ejecutar un servidor Tomcat dentro de Eclipse y generará errores directamente en la consola de Eclipse.

  • para el armazón, utilicé Struts and Tiles and Torque para el ORM, me tomó un tiempo entenderlo, pero una vez que hicimos amigos, no puedo imaginarme otra forma de desarrollarme. ¡Aunque me imagino que para un proyecto pequeño sería mucho sobrecarga!

  • estoy de acuerdo con una publicación anterior: obtengo HEADFIRST JAVA, así aprendí y lo usé para muchos otros idiomas, tienen un método visual de aprendizaje que es mucho más fácil que los libros de texto puros, bueno para mí de todos modos. Estuve despierta y corriendo en un día y confiada dentro de un par de semanas, supongo, pero siempre estoy aprendiendo :)

  • yip Java es estricto, pero a ti te encanta, para mí perder el viejo PHP es un poco extraño.

  • también necesitará descargar Tomcat para ejecutar sus bits de Java, es fácil de ejecutar.

  • Java organiza muy bien todas sus clases, nada de esto 'require_once (some_text_file.php)' basuras, solo 'import myClass' y listo.

  • una de las cosas que me molesta es que no hay forma de saber qué bibliotecas JAR NO estás utilizando, así que después de un par de años trabajando en un sitio, tu carpeta lib puede volverse un poco desordenada, especialmente si varias personas están eliminando y agregando funcionalidades.

podría seguir.

Paul

0

Para mi caso, sólo se ocupaba de gran cantidad de codificación de procedimiento sobre el php, por lo que salta a Java, no sólo me parece que todo sea más detallado y menos tolerante que php (pero ahora sé por qué debe ser así, y me encanta Java) pero aprender a organizar mi código en clases y también aprender el Eclipse IDE tomó aproximadamente 1.5 años de retoques, error de prueba &, hacer cosas por mi cuenta (principalmente aplicaciones de swing) .

Supongo que crear cosas por su cuenta, utilizar la gran cantidad de bibliotecas de Java para crear sus propias cosas es divertido, es la forma más rápida. También creo que podría haber ahorrado más tiempo leyendo los tutoriales de java sun a fondo. Ahorrar aún más tiempo es asegurarse de haber realizado una búsqueda exhaustiva de bibliotecas que eviten "reinventar la rueda".

¡Buena suerte!

Cuestiones relacionadas