Bitacora de Desarrollo Colabora!!

Hola a todos..

Bueno les quiero comentar que el proximo lunes comensare a desarrollar un proyecto y me surgen algunas inquitudes y dudas dado que es mi primer proyecto en forma grande y quise comensar a escribir esta bitacora a manera de ir redactando mis experiencias y errores asi como tambien contar con su ayuda para la resolucion de los problemas y casos a los que me enfrente y no solo eso sino que tambien puedan orientarme sobre las mejores herramientas a utilizar, y siendo asi empezare esta bitacora pidiendo su consejo para lo siguiente lo planteare a manera de problema (costumbre):

Se necesita desarrollar un sistema para una empresa, la cual se dedica a rentar personal de todo tiempo a demas empresas, el personal cuenta con cursos de capacitacion los cuales vencen a determinado tiempo, el gerente desea un modulo que le permita tener en pantalla una alarma que le indique el estado general de todos los cursos de los empleados (algo asi como un semaforo) que si los cursos de todos los empleados tienen por lo menos 1 mes de vigencia (semaforo en verde) si uno o mas empleados tiene una semana de vigencia (semaforo en amarillo) que si uno o mas empleados ya se vencio alguno de sus cursos (semaforo en rojo) ademas se descea tener un semaforo para la vigencia de los contratos (mismo funcionamiento que el de los cursos)..

Preguntas que seguramente tendran

¿El sistema se queda solo en eso?
R. No el sistema va a crecer ampliandole por lo menos 3 modulos mas
¿Hay restricciones sobre que tegnologia usar?
R. No ninguna

Preguntas que surgen al ver este problema:

¿que version de java utilizarias?
seria una arquitectura cliente-servidor, ¿que gestor de BD usarias y sobre que SO?

De momento es lo que se me ocurre y tambien tengo otras dudas pero son simples y creo que se resolveran sobre la marcha aun asi las pongo

¿de que manera se puede hacer un instalador para un jar de java?

ahi esta espero comenten y de igual manera ire posteando todo lo referente al proyecto aqui, recuerden arrancamos el LUNES!!! espero sea una buena experiencia para todos tanto para experimentados para ayudar a resolver las dudas como para principiantes que tienen las mismas dudas... Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

!cliente_servidor

Yo no usaría cliente-servidor definitivamente. Me iría sobre Java 6, Linux, PostgreSQL, Spring, y para lo demás por puro antojo diría Hibernate y Tapestry pero la verdad es que lo mejor es preguntar qué frameworks manejan los miembros del equipo de desarrollo; si varios manejan Hibernate, pues ya ni se discute, es Hibernate; pero tal vez resulta que varios manejan iBatis y solamente uno usa Hibernate... decidir un framework solamente porque la mayoría lo sabe usar no es directamente la mejor opción, aunque significa que el framework es popular y muy probablemente es popular porque es bueno. Pero esto lo deberían haber visto antes.

Pero pues si ya están por arrancar, deben elegir tecnologías que una buena parte del equipo de desarrollo ya maneje bien, para que puedan enseñarle sobre la marcha a los que no conocen los frameworks que se van a utilizar. Solamente deben usar un framework que nadie conoce (o que solamente un minoría domina) si realmente pueden en un debate convencer a todos de que el framework es la neta y que la productividad será tan alta que compense el tiempo invertido en que todos aprendan a usarlo.

Como dije al principio, no usaría cliente-servidor, por lo que no necesitaría un instalador de JARs de Java. Hoy en día ya no veo justificación para hacer una aplicación cliente-servidor; si realmente necesitas algo así pues habría que hacerla con java web start para que no se necesite un instalador sino que entren a una página y bajen su app y listo. Pero aún así tienes la bronca de que si actualizas la aplicación tienes que ver que todo mundo baje la nueva versión y no usen ya la versión anterior, o que en XP jala bien pero en Vista tiene broncas una pantalla o en Mac sale algo distinto o se ve mal porque no tienen el tiempo de probar el cliente en tantas plataformas. Hace 10 años entiendo que las aplicaciones web no podían ser demasiado sofisticadas por las limitaciones en los browsers, pero ahora ya es 2010 y tienes varias opciones para hacer RIAs; simplemente el usar AJAX te da mucho más poder para hacer varias cosas más dinámicas; y si usas Flex o ZK o cosas así pues no creo que vayas a extrañar la interfaz de Swing (que sigue siendo horrible) y sí te vas a ahorrar todas las broncas de estar distribuyendo una aplicación cliente.

Imagen de Shadonwk

gracias por el comentario ezamudio

mira te comento que el equipo de desarrolladores incluyendome somos algo novatos en el tema de los framework, asi es que lo que tenemos planeado es hacer una aplicacion que se distribuya a las personas interezadas (unas 5 personas por lo menos) y esta aplicacion se conecte a un servidor local (con posibilidades a que se expanda via web) y obtenga datos (altas, bajas, modificaciones, etc) procese esos datos y de una vista general (semaforos) es algo simple sin embargo queremos haerlo lo mejor posible ya que puede ser nuestra carta de presentacion para proyectos mas grandes, y aceptamos todo tipo de sugerencias comentarios y demas..

Imagen de Gustavo

Muy cierto

Es muy cierto lo que comenta ezamudio, hoy en día las aplicaciones web ya no son tan cuadradas y "aburridas" como hace tiempo, la verdad no he usado algunos de los frameworks que aqui comenta, los conozco pero hasta ahi, lo que si he utilizado es AJAX y creeme es impresionante lo que puedes hacer, ay muchas librerias que te ayudar a hacer más fácil el trabajo y el código dentro de tu aplicación. Nunca he manejado PostgresSQL, pero he escuchado buenos comentarios de el, por lo que veo no es un proyecto tan grande, te sugiero tengas cuidado con eso de que "puede crecer", ay cosas que si haces ahora te puedan afectar después. Mucha suerte siempre es agradable comenzar nuevos proyectos...

Saludos...desde Torreón...!!!

Imagen de Shadonwk

Hola Gustavo

que tal, sabes si he trabajado el AJAX pero en pequeñas paginas sin embargo lo que se quiere de momento es que el sistema funcione de manera local principalmente talvez despues pueda ampliarse al internet sin emabargo eso seria solo para consultas mediante una pagina web, lo que se busca en primera instancia es que sea funcional y potente y rapido por lo cual me inclino hacia java, y pues podria ser un jar ejecutable pero si me gustaria que se pudiera agregar una entrada al jar desde el menu inicio dado que va a ser utilizado en windows...

Imagen de ezamudio

Funcional, potente y rápido

Cuál de esas cualidades es la que crees que vas a sacrificar si haces una aplicación web (sobretodo RIA)?

Y tú mismo mencionas ahora que tal vez después pueda ampliarse al internet... para mí eso sería razón suficiente para hacer desde el principio una aplicación web. Inicialmente puede hospedarse en un servidor pequeño dentro de la empresa donde se va a usar; si se requiere utilizar desde fuera, se soluciona con una simple VPN hacia la red de la oficina y ya se puede usar la aplicación web sin instalar nada en la computadora casera (o laptop prestada o lo que sea). Y si un día ya tiene muchos usuarios y empiezan a estar geográficamente dispersos entonces la hospedan en un datacenter y todo mundo la usa a través de internet.

Siento como que ya decidieron que va a ser cliente-servidor y están buscando justificaciones para ello. Si ya lo decidieron y así lo van a hacer porque así quieren, háganlo así, no necesitan que los usuarios de la comunidad los validen, pero sí necesitan justificar su decisión con el cliente y los usuarios; si están teniendo problemas con eso y esa es la verdadera razón de que están buscando razones aquí, creo que es momento de evaluar entre ustedes (el equipo de desarrollo) si realmente es la mejor decisión.

Una última recomendación: si van a hacer una aplicación de escritorio, evalúen opciones como jGoodies, SWT, incluso Griffon. No les recomiendo para nada usar Swing solito, porque para hacer algo decente con Swing van a depender mucho de algún IDE para construir las GUIs de manera visual y pierden portabilidad (y otras razones más, que seguramente otras personas agregarán aquí en sus comentarios, a menos que haya por ahí un fan de Swing pero no creo).

Imagen de Shadonwk

Fantastico

Que bien ezamudio debo decirte que no conocia esas aplicaciones, las habia usado pero pensaba que ran simples swf, ahora que me he documentado y he visto algunos ejemplos como los de adobe y no podia faltar javaFX parece una buena tecnologia y bien me he decidido a realizar una pequeña prueba para convencer al equipo a que probemos con esta tecnologia ahora bien podrias guiarnos en los primeros pasos por ejemplo para hacer amm me buene a la mente una aplicacion que te pida el user y pass y si es correcto verificando en la bd que me diga felicidades de lo contrarrio marque error.. jeje sencillito pero sera la pauta para aprender...

Imagen de Shadonwk

Acerca de RIA's

hola que tal me pareceo correcto poner esto aqui dado que teine que ver con este proyecto y con las RIA's que se comentan mas arriba..

Bueno el caso esque he estado toda la semana investigando sobre JavaFX y sobre Flex y bien pienso que en esta batalla Flex es el ganador asi que me he descargado todos los elementos para poder desarrollar (hasta una licencia para Flex Builde 3 me dieron :X) y ya estoy dando mis primeros pasos pero aun hay algunas cosas que no me quedan claras:

1.- Flex solo se puede conectar a una bd mediante HTTPServices (web services)??
2.- Esos HTTPS se pueden generar mediante php y tambien mendiate java con WebORB estos generan simplemente texto plano xml que hay con la seguridad en estos archivos??

sigo leyendo...

COMENTARIO

Yo he realizado aplicaciones de escritorio usando swing y si es verdad hay tener mucho cuidado para mantener la portabilidad, pero si usas las bibliotecas estandares de java no hay peligro, tengo una aplicacion pos que funciona muy bien en windows, mac y linux

Imagen de ezamudio

Flex --> DB

Si la pregunta es realmente que si puedes usar algo similar a JDBC en Flex para conectarte a bases de datos, la respuesta es NO. Por razones de seguridad y escalabilidad, no vas a poder crear conexiones directamente a una base de datos desde Flex. Lo más recomendable es invocar algún web service para realizar las funciones que necesites en una base de datos; de esa forma tienes una aplicación que funciona como intermediaria, la cual se va a encagar de autentificar las peticiones que lo requieran, validar datos, administrar los recursos (como las conexiones a la base de datos, número de registros que se devuelven, tal vez manejo de cache para ciertos datos que no cambian seguido, etc).

La seguridad en este caso puede consistir simplemente en usar SSL; ponle un certificado X509 a tu web server y haz puras llamadas de "https://blabla" en vez de "http://blabla" desde Flex. Además de eso debes poner algún esquema de autentificación para las peticiones que van a modificar datos en el server y para consultas que devuelven información confidencial o privilegiada.

Imagen de benek

Aplicaciones de escritorio == Dolores de cabeza

Yo tampoco haría una aplicación cliente-servidor, las desventajas son muchas.

Piensa en el momento en el cual tengas que instalar la aplicación en cada equipo de los usuarios, cuando posteriormente tengas que hacerle un mantenimiento tendrás que generar el instalable de nuevo, remover la instalación y luego instalar, eso por cada máquina de tus usuarios.

Creo personalmente que el tiempo que gastarán en eso estaría mejor invertido si lo ocupas en aprender a crear aplicaciones web, cuestión que seguramente te servirá (y a los demás del equipo) hasta en el aspecto curricular. En algunos aspectos les implicará más esfuerzo, pero creo que vale la pena.

Si ya estás decidido a que sea cliente-servidor y estás considerando SWT te recomiendo que le des un vistazo primero a los componentes que tiene, ya que SWT fue creado inicialmente para el proyecto Eclipse, entonces la gama de componentes desarrollados no es tan variada como para algún proyecto genérico, sino que está un poco personalizada a las necesidades de Eclipse, pero aún así te puede servir, chécalo.

Flex es buena opción, aunque desde mi punto de vista acrecentará la curva de aprendizaje del equipo, también pueden evaluar tecnologías como JSF y alguna librería AJAX para JSF como ICEfaces o Richfaces, que la verdad son muy fáciles de aprender.

Saludos.

Javier Ramírez Jr.

Imagen de Shadonwk

Cliente servidor DESCARTADO!!

bien entiendo finalmente que la arquitectura cliente-servidor ya no es una buena opcion especialemente cuando se trata de un buen proyecto y tienes las puertas aviertas para aprender nuevas tecnologias y ademas patrocinado hasta cierto punto por lo cual decidimos descartarlo,...(aplausos)

Ahora viendo los alcances que tiene flex wooow son fantasticos y ami parecer es lo que necesitamos ya que como el proyecto se va a implementar en un servidor de triara (Telmex) <--- no pregunte porque ni me reclamen ya he tenido mis propias experiencias.... y como ustedes sabran no cuenta con soporte para jsp, ademas de que no cuenta con casi nada...

En la cuestion de los web services entiendo que son la unica forma de conectar a flex con una base de datos... y para garantizar la seguridad (hasta cierto punto) se utiliza el uso de certificados, entiendo que como dice E. Zamudio utilizar llamadas "https://" en lugar de "http://" bien sino me equivoco para hacer este tipo de llamadas debe existir en tu servidor una carpeta similar a httpsdocs para poder hacer ese tipo de llamadas y que pasa cuando no la hay?? si en la raiz de mi sitio solo esta (nombreusuario/..) aun asi puedo hacer llamadas hacia https?

y...

que hay del uso de algun framework para hacer los webservices como webORB?? <-- estos implementan seguridad? eliminan el uso de certificados??

Imagen de ezamudio

SSL no es la única seguridad

SSL te va a solucionar la bronca de que alguien pueda estar espiando la comunicación entre el navegador y el web server, nada más. Si requieres autentificación en el servidor (saber que los que te piden ciertas operaciones son usuarios que tienen los privilegios necesarios para lo que están solicitando) eso es otra cosa y tal vez weborb te lo pueda resolver o necesites usar alguna otra solución.

Lo del httpsdocs no sé, supongo que depende de tu web server; en Apache por ejemplo tienes el htdocs y ese puede servir para ambos casos o puedes tener un docroot para HTTP normal y otro para SSL, dependiendo la configuración.

Lo que no entiendo es cómo vas a poner una aplicación web en Java a correr en un servidor que no soporta JSP.

Imagen de Shadonwk

Ahora viendo los alcances

Ahora viendo los alcances que tiene flex wooow son fantasticos y ami parecer es lo que necesitamos ya que como el proyecto se va a implementar en un servidor de triara (Telmex) <--- no pregunte porque ni me reclamen ya he tenido mis propias experiencias.... y como ustedes sabran no cuenta con soporte para jsp, ademas de que no cuenta con casi nada...

lo que quise decir con eso es que talvez podamos aprovechar y aprender un poco sobre flex dado que el servidor que tenemos no soporta JSP por eso que sera en Flex.

Imagen de ezamudio

Alrevés

Normalmente se elige el hosting de las aplicaciones según las aplicaciones hechas... me parece muy extraño que se decidan por una u otra tecnología para la aplicación, basados en el hosting que van a utilizar, creo que no debería ser así, pero en fin.

Imagen de Shadonwk

Curioso no?

Si exacto pero mira te planteo lo siguiente: Estoy en una zona de empresas que sirven directa o indirectamente a pemex, la mayoria de las cuales no tiene nocion de lo que es una pagina web o un sistema web (algunas de ellas llevan pagando el servicio de hostin mas de 4 años sin hacer uso de el), lo que sucede en estas empresas es que como tienen buenos ingresos dado que su cliente es pemex pues hace tiempo algun "abusado" se paseo por aqui hablandoles bonito y ofreciendo principalmente el servicio de hosting (sin sitio web) y pues quien no sabe ( la fama que tenemos de cambiar oro por espejos) le parecio buena idea dado que seria de las primeras empresas en tener su pagina web y estar al dia ya sabes.. asi que el panorama esta asi:

Nos encontramos con clientes a los cuales no hay ningun problema cambian de servidor contratan lo necesario para hacer sus aplicaciones como las necesiten y estos almenos tienen la idea de que hacer un buen trabajo (en este caso el nuestro) a la larga es una buena inversion..

Tambien hay clientes los cuales se les diseño una pequeña pagina informativa (y hasta este punto esta bien) y quieren seguir teniendo la misma tal cual pero tambien quieren sistemas que sean capaz de conectarse a una base de datos y que ademas sea accesado desde cualquier parte (aplicacion web) pero no estan dispuestos a cambiar de servidor dado que el que tienen les funciona y asi a funcionado siepre..

Ahora bien la labor de convencerlos es tarea de nosotros pero creeme hay algunos muy dificiles y pues o de plano no le hacemos nada o nos adaptamos a lo que tienen..

En relacion al proyecto que tenemos pues nos encontramos analizando a fondo lo que se quiere lo que se necesita y pues tambien estudiando flex realmente me hubiera gustado que fuera javaFX pero ya descubri que tiene "algunas" limitaciones, -----seguimos aprendiendo flex si alguien tiene un tuto o quiere colaborar con material actualizado bienvenido---

Imagen de benek

Dependencia de Gob

Ja! Estuvo a punto de publicar ayer que seguramente era una dependencia de gobierno. Y es que según la política a seguir, el contenido de los sitios web de dependencias de gobierno federales o compañías paraestatales no debe estar alojado en servidores que estén fuera del país. Por ello casi siempre se van por Triara, con todo y sus conocidas deficiencias.

Saludos.

Javier Ramírez Jr.

Imagen de ezamudio

otros

Xertix, Diveo, Webcom, y hay otros en Monterrey y creo que Guadalajara también.