sugerencias para hacer un framework

Hola a todos a verdad no tengo mucha experiencia programando en java y me asignaron un proyecto que se trata de realizar un framework en java, me debe permitir el manejo de ventanas, controles, colores y esos compnentes basicos, el problema es que no tengo idea de cmo empezarlo y no se cual de los editores o entornos que maneja java sea el indicado, unas de las opciones que teng son el neetbeans, o el jcreator, les agradeceria mucho si puedieran ayudarme a elegir cual de los dos es mejor o si tienen alguna sugerencia para empezar. . .

pues de antemano les agradesco y ojala puedan ayudarme e uuurggggeeee!!!!!!

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

Más allá del IDE...

Lo que te aconsejo para desarrollar un framework es:

  • Define muy bien el problema que quieres resolver; esto es más complicado de lo que parece, porque si defines el problema como algo muy limitado, vas a terminar con una librería que solamente es útil para un proyecto, pero si lo ves como algo demasiado amplio, vas a terminar con algo más grande que Spring.
  • Recuerda que tus usuarios serán programadores pero eso no significa que tengan que estar viendo tu código
  • Diseña tu API usando interfaces siempre que se pueda. Esto te va a dar varias ventajas: más libertad para hacer cambios internos en tus implementaciones, te forza a pensar mejor en la funcionalidad que quieres exponer, y te permite a ti o a alguien más empezar a programar pruebas unitarias para tu framework, aunque todavía no lo tengas terminado.
  • Diseña un buen conjunto de pruebas, si se posible haz que alguien más las programe, y se deben ejecutar sin tener acceso a tu código sino solamente pasándole el JAR con tus clases.
Imagen de isa1108

El problema . . .

es que tengo ya tengo la idea de lo que quiero pero no se como empezar, me dijeron que necesitaban el framework para que la empresa misma programe ahi un proyecto que tienen pendiente, lo malo es que el encargado del proyecto no sabe nada de java, lo eligio porque es multiplataforma y porque quieren ahorrarse el pago de licencias y eso, yo he hecho algunos progrmas en java y se que es posible hacerlo, pero para empezar a hacer el framework no se or doonde ni en que empezar a hacerlo, e investigado y pues tengo todo asi como de forma muy general asi como tu me sugieres diseñar la API pero el propblema es que no se en que estoy buscando informacion sobre eso, asi que como ven no tengo mucho y pues solo me digern que necsitaban eso el manejo de ventanas, colores, botones, etiquetas todo lo necesario para poder programar el sstema y si tambien que posiblemente en un futuro puedan implementarse màs cosas, como métodos de encriptación, manejadores de BD, tc. . . así que lo veo complicado pero tengo k hacerlo si pudieran sugerirme o más menos hubicarme de como hacerlo les agradeceré muchisimo. . .
gracias otra vez . . .

Imagen de ezamudio

Licencias?

Eligieron Java porque se ahorran el pago de licencias? de qué licencias? Ciertamente el runtime de Java (incluso el JDK) es gratuito, pero depende de las librerías de terceros y otro software que utilicen, el que haya pago de licencias. Fíjense también en las licencias de las librerías externas que utilicen para que no infrinjan su uso. Recuerden que Free Software es Software Libre, no Gratis, así que puede haber algunas restricciones en ciertas librerías que no les gusten, si es que van a desarrollar algo que van a redistribuir.

Por lo demás, veo que realmente no tienes la menor idea de Java, y creo que hacer un framework no es un buen primer proyecto. No importa si usas Eclipse o NetBeans, o un simple editor de texto; eso es solamente la herramienta, pero necesitas tener muy bien dominados ya los conceptos fundamentales de OOP y conocer las clases más utilizadas en Java, así como Swing y AWT porque en tu caso me parece que van a hacer una aplicación de escritorio.

Imagen de benek

Diseñando tu propio framework

Te comparto esta lectura que encontré, en la que Jim Booth narra según su perspectiva la manera de diseñar un framework...

Sin duda no es algo sencillo de lograr, necesitarás leer mucho, suerte con ello!

Imagen de isa1108

bueno . .

posiblemente no me se explicar bien y es cierto no soy experta en java asi que tendre que estudiar un buen tengo que sacar este proyecto . . . gracias por tu ayuda y espero pronto tener ya definido lo que voy a hacer te preguntaré haber que te parece de nuevo muchas gracias . .

Re: sugerencias para hacer un framework

Cuesta trabajo creer que te hayan encargado hacer un framework en el trabajo. No lo hagas ya existen varios. Si se trata de una aplicación desktop, que te compren libros sobre el Rich Client Platform de Eclipse. Requieres dominio del lenguaje de programación Java

Saludos

Javier Castañón

Imagen de ezamudio

NIH

Probablemente una empresa que sufre del síndrome de NIH - Not Invented Here. Alguien que regularmente programa con tecnologías Microsoft (que son los peor infectados con NIH) pero ahora por alguna razón decidieron usar Java y como no saben que hay miles y miles y miles de librerías y frameworks para desarrollar cualquier tipo de cosa, decidieron hacer el suyo propio.

Imagen de isa1108

gracias . . .

realmente los comentarios no son muuy alentadores je je je, les agradeceria mucho si alguien conoce algunos frameworks que esten hechos en java para probarlos y haber si me puedo dar una idea mas clara... por cierto gracias benek el articulo estamuy interesante y encontre otras cosillas interesantes gracias . . .

Imagen de isa1108

totalmente cierto . . .

esa es la descripción exacta de esta empresa lo unico malo es que los frameworks que han hecho son en foxpro y ahora repentinamente decidieron cambiar a java y ni siquiera el encrgado del proyecto sabe utilizar java que mal plan nooo???? en fin seguire sufriendo . . .

Imagen de ezamudio

Va que vuela...

Orale, no sabía que se pudieran hacer frameworks en Foxpro. O sea que probablemente ni han visto una RDBMS de verdad? Si el proyecto requiere una base de datos embebida, uniusuario, pueden ver Derby o SQLite...

Y siento decirlo pero ese proyecto (y la empresa completa) suena como que van que vuelan para aparecer en el Daily WTF.

Un Framework no necesariamente es software

Que tal Isa

Antes que nada no te quiebres tanto la cabeza intentando reinventar la rueda, un Framework no necesariamente es un conjunto de librerias, es un marco de trabajo como su nombre lo indica, si vamos a la wikipedia aparece la siguiente definición

"... Un framework, en el desarrollo de software, es una estructura de soporte definida, mediante la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
....... Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio....."

Es decir un framework puede ser un documento en el cual estructures los lineamientos a seguir para la construcción de aplicaciones, definiendo la arquitectura a seguir, así como las reglas del juego.

Podrias hacer un documento en el cual pongas que propones usar (a manera de ejemplo) Griffon para la parte de interface de usuario, GORM para persistencia, Spring como contenedor el cual ya esta dentro de Griffon hermano de Grails, JUnit para pruebas unitarias, etc, etc, etc.

Hay muchos otros frameworks para aplicaciones de escritorio que puedes utilizar, solo que bueno el salto de FoxPro a Java sera doloroso y la productividad a la que estabas acostumbrada a trabajar se reducirá considerablemente ya que son ligas diferentes.

Saludos

Aveces los requerimientos no son

Re: gracias . . .

isa1118 escribió

realmente los comentarios no son muuy alentadores je je je, les agradeceria mucho si alguien conoce algunos frameworks que esten hechos en java para probarlos y haber si me puedo dar una idea mas clara... por cierto gracias benek el articulo estamuy interesante y encontre otras cosillas interesantes gracias . . .

Javier había escrito:

Si se trata de una aplicación desktop, que te compren libros sobre el Rich Client Platform de Eclipse. Requieres dominio del lenguaje de programación Java

¿Ya viste el tamaño de éste? ¿De verdad quieres evaluar otros frameworks? Intenta con JGoodies, es mucho más pequeño. Está dirigido a quienes se sienten a gusto programando GUIs sin diseñadores visuales.

Saludos

Javier Castañón

Re: NIH

Probablemente una empresa que sufre del síndrome de NIH - Not Invented Here. Alguien que regularmente programa con tecnologías Microsoft (que son los peor infectados con NIH)

No sé, como que en dichas empresas no se complican. Usan los asistentes y diseñadores que proporciona Microsoft y ya, no lo piensan mucho. Como varios "javeros" que arman una mesa redonda para discutir los veintitantos patrones del Gamma para hacer un maestro detalle :-S

Cuando vean que lo que hacían en FoxPro en un día tardan en hacerlo en Java dos o tres días, van a decir que Java es una porquería.

Saludos

Javier Castañón

Imagen de isa1108

holaaa . . . de nuevo yooo

hola a todos y gracias por su ayuda y comentarios, la verdad me son muy útiles para tener realmente una idea de lo que voy a hacer, pues gracias precisamente a todas las ideas y comentarios que me hicieron hoy en la mañana me arme de valor je je je y le pregunte al encargado que era lo que realmente queria porque asi como yo lo habia entendido lo veia mmuuuy complicado y e fin le comente princialmente lo que me dijeron en este foro y entonces ya fue que me dijo: que si efectivamente no queria que inventaramos un nuevo lenguaje o algo asi, si no que vamos a programar clases y métodos con las que ellos cuando programan un sistema puedan usarlos etc. . .
espero me explique màso menos ahora siii, je je . . .
pero bueno ahora tambien me encargaron buscar manuales, tutoriales, cursos y todo lo que me ayude para poder capacitarlos en java como lo ven . . .

bueno ahorapodrian recomendarme algunos sabiendo que practicamente estamos en 0 respect a java ups!!!

gracias de nuevo de lo que me salvaron. . . .

Imagen de ezamudio

tomen un curso

Si se van a meter a hacer un proyecto (o varios) ya en Java, lo más recomendable es que tomen un curso. Si no todos, algunos elementos clave deben tomar un curso y replicar el conocimiento hacia el resto del equipo. En mi opinión, pura literatura no es suficiente en este caso.

Si su aplicación va a ser en web, necesitan conocer algo de J2EE, junto con servlets o JSP o de preferencia ya directamente algun framework como JSF, ICEFaces, Tapestry, Wicket, Grails, etc.
Si su aplicación va a ser de escritorio, necesitan conocer Swing o SWT de Eclipse, o adicional a Swing algo como jgoodies que ya lo mencionaron (le eché un ojo y se ve bueno, voy a probar eso de las formas de jgoodies); parece que hay algo equivalente a Grails para escritorio pero no recuerdo su nombre.

Tal vez aprender Groovy sea un poco menos drástico que aprender Java?

Re: holaaa . . . de nuevo yooo

que si efectivamente no queria que inventaramos un nuevo lenguaje o algo asi, si no que vamos a programar clases y métodos con las que ellos cuando programan un sistema puedan usarlos etc. .

Híjole... programar clases y métodos para que otros los usen es algo así como un framework. Bueno, al menos una librería. Háganle como les dice ezamudio. Tomen no uno, sino varios cursos. Y tomen en cuenta que necesitan estudiar. Mucho.

Sobre todo, sería bueno contratar a alguien que los asesore:

1) ¿Swing o SWT? (¿Tiene futuro Swing?)
2) ¿Qué plataforma de clientes ricos: NetBeans, Eclipse RCP o quizá Spring Rich Client? (JGoodies no es mala opción) (JSR-296 está prácticamente muerto)
3) Un binding framework como para Swing o algún equivalente para SWT (Nadie en Sun le presta atención a JSR-295)
4) Comprar un buen conjunto de componentes. Repito *comprar* un buen conjunto de componentes. Para Swing Jide Soiftware es una buena opción.

Lo único que se van a ahorrar con Java es en costos de licenciamiento. Desconozco los términos del licenciamiento de FoxPro. Pero deberán hacer una inversión muy importante en capacitación.

Saludos

Javier Castañón

Imagen de bonfil1

wtf??

Todo se hizo una mezcolanza en este post, jeje lo que veo es que isa solo queria estableces metodos para su compañia no, para que solo los importara a la hora de hacer un software y que fuera mas rapido un desarrallo pero pues para eso a un asi debes de conocer bien java, bueno solo queria aportar en este intereseando post

Re: wtf??

¿Dónde te parece una mezcolanza? Esto con el propósito de ilustrar/aclarar para los que apenas inician en Java o tienen una "WTF" idea de lo que implica el desarrollo de clientes de escritorio.

Saludos

Javier Castañón

hola, ezamudio

hola, el solo te pidio consejo no criticas destructivas, podrias ser mas proactivo

Imagen de ezamudio

Griffon!

Leyendo aquí mis comentarios veo que hablaba de Griffon pero no recordaba el nombre. Griffon es un framework para hacer aplicaciones Swing en Groovy, muy similar a Grails, pero Grails es para web, Griffon es para apps de escritorio. Creo que les puede servir mucho. Simplemente con usar el SwingBuilder puedes construir toda una interfaz visual con pocas líneas de código, con todo y listeners y cosas así.

@daringh: Publiqué aquí 4 comentarios con consejos y un comentario con lo de que van a aparecer en el DailyWTF que supongo es la crítica destructiva a la que mencionas. Puedes ignorar el de DailyWTF y concéntrense en los otros 4, como hizo el autor del post. No sé cuántos comentarios con consejos como tomar cursos, revisar frameworks existentes, la manera en que diseñen el API, etc debo poner para que se considere "proactivo".

Imagen de beto.bateria

Hola isa1108:Para hacer un

Hola isa1108:

Para hacer un framework necesitas dominar lo siguente: polimorfismo, asignacion de tareas y generalizacion.

Por cada concepto mencionado debes de aprender (o te ayuda a dominar el concepto):

Polimorfismo:
Programacion orientada a objetos.

Asignacion de tareas
Patrones GRASP

Generalizacion.
Patrones GOF y mucha experiencia.

Una opinion muy personal, si de foxpro se van a pasar a swing ¿porque no hace el salto de una vez a web? a la larga va a ser mas productivo :).

Existen patrones como el model, view, controller que te ayudan mucho.

Espero que te sirva mi comentario.

.... no inventes el hilo negro.

Trabajando en frameworks queda claro una cosa: hacer un Framework es 10 veces más complicado que código específico.

Un Framework es por definición una plataforma genérica que tiene como objetivo simplificar al reusar un set de librerías, en lugar de que cada desarrollador hago algo diferente para lo mismo… por hacer una burda definición.

Pero el punto es, si antes tenias que pensar si x código es correcto para x tarea en x circunstancia, en un Framework tiene pensar si ese x código es correcto para x,y,z,w,a,b,c tareas bajo q,w,e,r,t,y circunstancias.

Necesitas mucha experiencia en la herramienta y en el área de negocio donde lo vas a aplicar por que el Framework "congela" la manera de resolver X problema para todos, para bien o para mal. Si es para bien se multiplica el beneficio por cada desarrollador, si es para mal, tu bug no queda en un módulo, sino en todos……

Como diseñadora de un Framework te estas aventando la responsabilidad de decir "Yo creo que así se deben hacer las cosas, y así las vamos a hacer todos… "

Estas lista ? vale la pena el riesgo ? O mejor define bien tus requerimientos ahora y a futuro y selecciona un Framework ya existente.

Y por que revivieron esta

Para hacer un framework en Java tienes primero que conocer muy bien el lenguaje, luego conocer muy bien al menos un framework existente ( al menos para saber que diablos es un framework ) y luego tener algunos años de experiencia en el diseño.

Les dejo el link a una platica mucho muy interesante de Joshua Bloch, quién diseño el "Collections Framework" de Java ( la verdad ni sé por que se llama así si en realidad es una biblioteca ) que básicamente es todo lo que está en el paquete java.util

Como diseñar un buen API y porque es tan importante ( en inglés ) :

( ¿Y por que revivieron esta discusión en primer lugar? je je je )

Imagen de beto.bateria

no me fije en las fechas :S

no me fije en las fechas :S