2009-07-21 7 views
6

Muy bien, entonces soy un estudiante universitario compsci que, al estar en la universidad, todavía no se ha diversificado hacia una cierta especialización. He estado programando desde que era un adolescente, ciertamente conozco mis cosas, muy versado en aproximadamente ocho idiomas diferentes, así como teoría de compsci, etc. Además, tengo cerca de cuatro años de programación web (PHP principalmente) detrás de mí, teniendo comenzó el trabajo independiente en esa área desde que la web 2.0 se puso caliente.Aventuras de un programador web en Applicationland (o, se necesita ayuda práctica de Java)

Mi trabajo de verano ahora como pasante es escribir una aplicación para una puesta en marcha industrial, no relacionada con el software. Esta aplicación se usará para administrar líneas de producción y flujo logístico. Elegí Java para mi idioma porque no quiero dispararme en el pie.

Estoy bien versado en la sintaxis de Java, en sus estructuras de datos, en la teoría del lenguaje, etc., pero no tengo ni idea de por dónde empezar. Puedo imaginar el programa perfectamente en mi mente, entiendo el problema claramente y entiendo la teoría de la solución. A saber, no tengo idea de qué bibliotecas usar, y tengo miedo de que no estén bien documentadas.

Estas son algunas líneas generales de lo que voy a hacer:

  • Dos aplicaciones, un servidor y un cliente (de los cuales habrá muchas copias).
  • El servidor y los clientes obviamente se comunicarán a través de (no sé).
  • Tanto el servidor como el software del cliente tendrán GUI.
  • El software del servidor tendrá que Consultar una base de datos MySQL.
  • El software del cliente debe estar 'activo' en en el sentido de que la GUI se actualiza cuando se realiza un cambio en la base de datos. Este es uno de los motivos por los que no puede ser una aplicación web.

Ni siquiera estoy seguro de si un marco es adecuado para mí o no. He usado MVC toneladas de veces en mi trabajo freelance web, pero no sé cómo se traducirá para aplicaciones de escritorio.

En resumen, estoy buscando las bibliotecas adecuadas para el trabajo, así como consejos sobre si debo usar o no un marco (y si es así, cuál). Gracias.

Respuesta

2
  • Java Desktop 6 (JRE)
  • JDBC (incorporada en cualquier JRE)
  • conductores MySQL JDBC (de descarga gratuita)
  • para la comunicación tiene varias opciones: RMI (built-in) Sin embargo este día recomiendo
    aprender algo como Java web Services (JAX-RS)
3

recomiendo que sólo se construye una aplicación web. Una aplicación web puede ser 'en vivo' en el sentido en que la está describiendo mediante el uso de AJAX. Sería mucho más fácil construir solo una cosa. Si también desea tener un cliente rico, entonces necesita construir la interfaz de usuario en una tecnología con la que no está familiarizado (como Swing o SWT) y diseñar/implementar el mecanismo de comunicación.

Eche un vistazo a Hibernate (herramienta ORM) y Spring (marco IoC). Tienen una curva de aprendizaje algo empinada, pero te harán la vida más fácil a largo plazo. Para la parte UI, quizás JSF sea más fácil para un principiante.

Como una última nota, creo que tiene un plan demasiado ambicioso. Lo que está describiendo no es un proyecto fácil y requiere experiencia con muchas tecnologías. No intentes hacer todo de una vez.

0

Bueno, esto puede ir tan salvaje como puedas pensar o puedes ir y hacer KISS.

Si desea algo que sea realmente simple (como no usar ningún marco): * En el lado del servidor puede usar RMI. Este lado del servidor usará JDBC simple para conectarse a su base de datos MySQL. Pero algunos dijeron que esto es algo antiguo, así que si quieres obtener funky puedes probar JAX-RS que puede devolver un objeto/XML JSON a tu cliente. * Su cliente puede crearse utilizando Swing (suponiendo que está desarrollando una computadora de escritorio) o Servlet + JSP (suponiendo que esté desarrollando una aplicación web) y conéctese a su servidor llamando a los objetos RMI/objetos JSON/XML que expone el servidor.

Si desea obtener desagradable que le ayudará en términos de mantenimiento del código, es posible que desee enchufar Spring + Hibernate en esta aplicación.

¡Buena suerte!

0

Bibliotecas?

JDBC para la base de datos. Es posible que desee consultar los mecanismos ORM como Hibernate

Recomendaría las bibliotecas Apache Commons para todo su trabajo de utilidad (manejo de archivos, IO, etc.). Hay muchas cosas allí para salvarte reinventando la rueda.

Un marco de registro estándar como Log4j le permitirá iniciar sesión de muchas maneras diferentes, filtrar sus registros y conectarse fácilmente a soluciones de monitoreo.

No dice si las soluciones basadas en navegador son aceptables para la GUI cliente/servidor, y esa decisión generará una gran parte de la arquitectura adicional.

Si está buscando soluciones basadas en navegador, aconsejaría una conexión a tierra en servlets independientemente de cualquier marco que elija en última instancia (sin duda, se recomendará mucho aquí).

En esta etapa se está convirtiendo en un gran proyecto. Tal vez deba concentrarse en que funcionen los fundamentos (funcionalidad cliente/servidor) y preocuparse por la GUI más adelante. De lo contrario, es una gran cantidad de trabajo (y el trabajo con GUI puede consumir una gran cantidad de tiempo).

7

¿Este es un trabajo de pasante de verano? Para ser sincero, esto me parece más un gran proyecto si me preguntas. ¿Usted dice que la puesta en marcha no está relacionada con el software? ¿Quién propuso esta idea? ¿Tienen alguna idea del (enorme) alcance que algo así podría conllevar?

negocio de desarrollo de software es algo bastante diferente a la sintaxis del lenguaje y las bibliotecas. Se trata de la recopilación de requisitos, la definición de una especificación, la escritura de código, la garantía de la calidad de ese código, la prueba y demás. Estas no son cosas que un practicante razonablemente debería esperar.Para algo como esto, debes estar bajo una supervisión más experimentada, alguien de quien puedas aprender, alguien que haya hecho esto antes.

Dicho esto, a menos que haya una buena razón, probablemente haría algo así como un sitio web en lugar de una aplicación de escritorio. Las aplicaciones de escritorio son mucho más complicadas de muchas maneras. Necesita codificar tanto un cliente como un servidor. La comunicación es un poco más complicada. Debe preocuparse por la cuestión de mantener el estado en múltiples aplicaciones, cómo manejar las actualizaciones, etc.

En resumen, es un gran trabajo. Incluso un sitio web es un gran trabajo, pero muchos de estos problemas desaparecen. Podrías hacer esto con Java. Ciertamente he codificado mi parte justa de los sitios web de Java, pero PHP podría ser una apuesta mucho más simple.

Además, el desarrollo de escritorio en Java es, bueno, una tortura. Swing es (imho) probado y verdadero pero también increíblemente doloroso para desarrollarse. Otras bibliotecas de escritorio (por ejemplo, Netbeans RCP, Eclipse SWT) son más modernas pero tienen otras idiosincrasias.

Las bibliotecas remotas de escritorio incluyen cosas como Spring Remoting, incluso servicios web y otras cosas como Burlap. Por el lado del servidor, estaría usando Tomcat o un servidor de aplicaciones (Glassfish es mi opción preferida), servlets y Spring. La persistencia se puede hacer a través de Hibernate o Ibatis (o muchas otras opciones).

Pero, sinceramente, la opción de escritorio es mucho más compleja que una basada en web. Probablemente harás mucho más rápido usando PHP + jQuery + MySQL.

Si está haciendo esto, manténgalo lo más simple posible. Intente definir el mínimo absoluto que necesita para entregar inicialmente y hacer eso. Una vez que alguien tiene eso, entonces tendrá una mejor idea de lo que funciona para ellos y lo que no. Básicamente es más fácil refinar algo que ya existe vs definir algo que no.

+1

+1 para el uso PHP + jQuery + MySQL observación. ¡Usar las herramientas con las que está familiarizado es más importante que tener éxito con Java! – extraneon

+0

Estaba seguro de descartar absolutamente las aplicaciones web antes de tomar esta ruta, en función de los requisitos de su proyecto. Gracias por las sugerencias de tu biblioteca. Tienes razón, esta empresa es de pequeño tamaño, por lo que probablemente no conocen el alcance. –

0

Sólo una nitpicking:

Tanto el servidor y el software de cliente tendrá interfaces gráficas de usuario.

Te aconsejo que tengas un servidor sin cabeza (in awt parlalance), con una GUI de administración, no un servidor GUI.

Cuestiones relacionadas