|
View:
New views
17 Messages
—
Rating Filter:
Alert me
|
|
|
Crear clase en tiempo de ejecuciónAlguien tiene información de como crear una clase en tiempo de ejecucion ?.
Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion quiero crear una clase de nombre Robot con varias funciones y atributos, y esta misma clase poder usarla en el momento. Saludos, |
|
|
Re: Crear clase en tiempo de ejecuciónPues imagino que deberás hacer algún método que cree el código... luego lo
compilas.. y lo cargas dinamicamente.. no???? no es dificil! (al menos lo que has explicado así...), quizás no rápido o demasiado eficiente... pero funciona! El 9 de agosto de 2009 14:56, yamsung lage <yamsung@...> escribió: > > > Alguien tiene información de como crear una clase en tiempo de ejecucion ?. > > Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion > quiero crear una clase de nombre Robot con varias funciones y > atributos, y esta misma clase poder usarla en el momento. > > Saludos, > > |
|
|
Re: Crear clase en tiempo de ejecución¿y uno de los patrones de creacion no te vale?
http://es.wikipedia.org/wiki/Factory_Method_(patr%C3%B3n_de_dise%C3%B1o) El 9 de agosto de 2009 15:04, Gonzalo Aranda<gonzaloaranda@...> escribió: > > > Pues imagino que deberás hacer algún método que cree el código... luego lo > compilas.. y lo cargas dinamicamente.. no???? > > no es dificil! (al menos lo que has explicado así...), quizás no rápido o > demasiado eficiente... pero funciona! > > > El 9 de agosto de 2009 14:56, yamsung lage <yamsung@...> escribió: >> >> >> >> Alguien tiene información de como crear una clase en tiempo de ejecucion >> ?. >> >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >> quiero crear una clase de nombre Robot con varias funciones y >> atributos, y esta misma clase poder usarla en el momento. >> >> Saludos, > > -- VID : 225463 Web: http://eloy-mp.com http://xoops.eloy-mp.com http://wp.eloy-mp.com http://wordpress.eloy-mp.com mail: emierp_@... eloy.mier.perez_@... skype: eloy.mier.perez msn: emierp_@... icq: 41709142 Un saludo. Eloy Mier Pérez. |
|
|
Re: Crear clase en tiempo de ejecuciónHola Eloy,
Asi lo he pensado en un principio pero en si no me vale, a ver si logro explicar el porque: En el ejemplo de la pagina, // Definimos la clase abstracta constructora public abstract class Creator{ // Operación que realiza public Product anOperation() { Product aProduct = factoryMethod(); return aProduct; } // Definimos método abstracto protected abstract Product factoryMethod(); } La cuestion es que a partir de aqui, pueden darse infinidades de casos en la creacion de una clase que extienda de Creator. Actualmente, esa informacion la leo de un archivo, imagina que en el archivo 1 dice que existe una clase NoConcreteCreator que extiende de creator y que el metodo factoryMethod() ejecuta ciertas acciones y que ademas hay dos metodos propios de NoConcreteCreator, todo esto definido en el XML. En pocas palabras, las clases resultan dinamicas y por eso necesito crearlas en tiempo de ejecucion. Me explico? 2009/8/9 Eloy Mier Pérez <emierp@...>: > > > ¿y uno de los patrones de creacion no te vale? > > http://es.wikipedia.org/wiki/Factory_Method_(patr%C3%B3n_de_dise%C3%B1o) > > El 9 de agosto de 2009 15:04, Gonzalo Aranda<gonzaloaranda@...> > escribió: > >> >> >> Pues imagino que deberás hacer algún método que cree el código... luego lo >> compilas.. y lo cargas dinamicamente.. no???? >> >> no es dificil! (al menos lo que has explicado así...), quizás no rápido o >> demasiado eficiente... pero funciona! >> >> >> El 9 de agosto de 2009 14:56, yamsung lage <yamsung@...> escribió: >>> >>> >>> >>> Alguien tiene información de como crear una clase en tiempo de ejecucion >>> ?. >>> >>> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >>> quiero crear una clase de nombre Robot con varias funciones y >>> atributos, y esta misma clase poder usarla en el momento. >>> >>> Saludos, >> >> > > -- > VID : 225463 > Web: > http://eloy-mp.com > http://xoops.eloy-mp.com > http://wp.eloy-mp.com > http://wordpress.eloy-mp.com > mail: > emierp_@... > eloy.mier.perez_@... > skype: eloy.mier.perez > msn: emierp_@... > icq: 41709142 > Un saludo. Eloy Mier Pérez. > |
|
|
Re: Crear clase en tiempo de ejecuciónLo veo poco eficiente, pero bueno igual tengo dudas:
Lo que me propones es lo siguiente: 1. crear un archivo .java con el codigo 2. Compilarlo en tiempo de ejecucion... Tienes informacion de como hacer esto ? 3. Cargarlo dinamicamente ... Igualmente, tendrias informacion de como hacerlo ? Un saludo 2009/8/9 Gonzalo Aranda <gonzaloaranda@...>: > > > Pues imagino que deberás hacer algún método que cree el código... luego lo > compilas.. y lo cargas dinamicamente.. no???? > > no es dificil! (al menos lo que has explicado así...), quizás no rápido o > demasiado eficiente... pero funciona! > > > El 9 de agosto de 2009 14:56, yamsung lage <yamsung@...> escribió: >> >> >> >> Alguien tiene información de como crear una clase en tiempo de ejecucion >> ?. >> >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >> quiero crear una clase de nombre Robot con varias funciones y >> atributos, y esta misma clase poder usarla en el momento. >> >> Saludos, > > |
|
|
Re: Crear clase en tiempo de ejecuciónbuscá en google cosas como "lassloader dynamically load class". aca hay uno con ejemplos:
http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html On Sun, 9 Aug 2009 14:56:16 +0200 yamsung lage <yamsung@...> wrote: > Alguien tiene información de como crear una clase en tiempo de ejecucion ?. > > Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion > quiero crear una clase de nombre Robot con varias funciones y > atributos, y esta misma clase poder usarla en el momento. > > Saludos, > -- Sebastian Gurin <sgurin@...> |
|
|
Re: Crear clase en tiempo de ejecución
Puedes utilizar janino http://www.janino.
__._,_.___
Para cancelar su subscripción a este grupo, envíe un mensaje de correo electrónico a:
javaSpain-unsubscribe@... Modificar la configuración mediante la Web (ID de Yahoo! obligatoria) Modificar la configuración mediante el correo: javaSpain-digest@... | javaSpain-traditional@... Visita tu grupo | Condiciones de uso de Yahoo! Grupos | javaSpain-unsubscribe@... .
__,_._,___
|
|
|
Re: Crear clase en tiempo de ejecución2009/8/9 yamsung lage <yamsung@...>:
> > > Alguien tiene información de como crear una clase en tiempo de ejecucion ?. > > Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion > quiero crear una clase de nombre Robot con varias funciones y > atributos, y esta misma clase poder usarla en el momento. Uhm... no veo por qué necesitarías esta clase. ¿Puedes poner un ejemplo? Un saludo, Serabe -- http://sergio.arbeo.net http://www.serabe.com |
|
|
Re: Crear clase en tiempo de ejecución> Uhm... no veo por qué necesitarías esta clase. ¿Puedes poner un ejemplo?
No entiendo lo que dices pero bueno trato de ponerte un ejemplo... Imaginate un programa en java que sea un simulador, entonces le debes pasar un archivo (Xml, o cualquiera). En este archivo se especifican unos objetos con sus datos miembros (ubicacion, color, etc) y sus funciones (cambiar de color, cambiar de posicion, girar, etc). Bueno la idea es que cuando el programa reciba el archivo, lo abra, identifique los objetos y los cree en tiempo de ejecución. Asi este archivo puede tener varios objetos, por ejemplo: Robot, caja, camion, etc. Y estos a su vez varias atributos con varios metodos. Sergio, espero haberme hecho explicar 2009/8/9 Sergio Arbeo <serabe@...>: > > > 2009/8/9 yamsung lage <yamsung@...>: > >> >> >> Alguien tiene información de como crear una clase en tiempo de ejecucion >> ?. >> >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >> quiero crear una clase de nombre Robot con varias funciones y >> atributos, y esta misma clase poder usarla en el momento. > > > Un saludo, > > Serabe > > -- > http://sergio.arbeo.net > http://www.serabe.com > |
|
|
Re: Crear clase en tiempo de ejecuciónMuchas gracias Sebastian,
Con lo que me envias solucionaria los puntos 2 y 3 de lo comentado anteriormente: 1. crear un archivo .java con el codigo 2. Compilarlo en tiempo de ejecucion... Dynamic Class Loading and Reloading in Java 3. Cargarlo dinamicamente ... Dynamic Class Loading and Reloading in Java Lo mirare un poco, más y mañana me pongo a implementarlo con esta solución. 2009/8/9 Sebastian Gurin <sgurin@...>: > > > buscá en google cosas como "lassloader dynamically load class". aca hay uno > con ejemplos: > > http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html > > On Sun, 9 Aug 2009 14:56:16 +0200 > yamsung lage <yamsung@...> wrote: > >> Alguien tiene información de como crear una clase en tiempo de ejecucion >> ?. >> >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >> quiero crear una clase de nombre Robot con varias funciones y >> atributos, y esta misma clase poder usarla en el momento. >> >> Saludos, >> > > -- > Sebastian Gurin <sgurin@...> > |
|
|
Re: Crear clase en tiempo de ejecuciónMarco,
Pero esto seria un compilador de java totalmente independiente, o me equivoco ? 2009/8/9 Marco Ortiz <mortiz@...>: > > > Puedes utilizar janino http://www.janino.net/ > > Saludos > > Sebastian Gurin escribió: > > > > buscá en google cosas como "lassloader dynamically load class". aca hay uno > con ejemplos: > > http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html > > On Sun, 9 Aug 2009 14:56:16 +0200 > yamsung lage <yamsung@...> wrote: > >> Alguien tiene información de como crear una clase en tiempo de ejecucion >> ?. >> >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion >> quiero crear una clase de nombre Robot con varias funciones y >> atributos, y esta misma clase poder usarla en el momento. >> >> Saludos, >> > > -- > Sebastian Gurin <sgurin@...> > > |
|
|
Re: Crear clase en tiempo de ejecuciónojo con esto... No acabo de entender cuáles son tus requerimientos, pero si lo que quieres es persistir los objetos de tu applicación entonces no es por el lado de carga dinámica de clases que lo resuelves, sino por el lado de serialización de objetos java a xml. Son cosas distintas.
Utiliza la carga dinámica de clases solo cuando ya no te quede otra... o sea, cuando el requerimiento sea que el usuario pueda insertar su propia implementación de cierto comportamiento en caliente (sin tener que detener la aplicación, agregar el código, compilar y reiniciar la aplicación). Si "las variantes" del comportamiento se conocen todas, en ese caso te conviene implementarlas a cada una de ellas en una clase java por separado, y utilizar el patrón de diseño Strategy para que el usuario pueda intercambiar de "variante" dinámicamente. Utiliza dynamic class loading solo cuando el requerimiento sea que las alternativas puedan ser definidas y "publicadas" dinámicamente. En el caso de que la carga dinámica de clases se alo que necesites, a continuación pego un código que hace los pasos 1, 2 y 3 que mencionas en otro mail. Suerte! import java.io.*; import java.util.*; import java.lang.reflect.*; public class MakeTodayClass { Date today = new Date(); String todayMillis = Long.toString(today.getTime()); String todayClass = "z_" + todayMillis; String todaySource = todayClass + ".java"; public static void main (String args[]){ MakeTodayClass mtc = new MakeTodayClass(); mtc.createIt(); if (mtc.compileIt()) { System.out.println("Running " + mtc.todayClass + ":\n\n"); mtc.runIt(); } else System.out.println(mtc.todaySource + " is bad."); } public void createIt() { try { FileWriter aWriter = new FileWriter(todaySource, true); aWriter.write("public class "+ todayClass + "{"); aWriter.write(" public void doit() {"); aWriter.write(" System.out.println(\""+todayMillis+"\");"); aWriter.write(" }}\n"); aWriter.flush(); aWriter.close(); } catch(Exception e){ e.printStackTrace(); } } public boolean compileIt() { String [] source = { new String(todaySource)}; ByteArrayOutputStream baos= new ByteArrayOutputStream(); new sun.tools.javac.Main(baos,source[0]).compile(source); // if using JDK >= 1.3 then use // public static int com.sun.tools.javac.Main.compile(source); return (baos.toString().indexOf("error")==-1); } public void runIt() { try { Class params[] = {}; Object paramsObj[] = {}; Class thisClass = Class.forName(todayClass); Object iClass = thisClass.newInstance(); Method thisMethod = thisClass.getDeclaredMethod("doit", params); thisMethod.invoke(iClass, paramsObj); } catch (Exception e) { e.printStackTrace(); } } } On Sun, 9 Aug 2009 22:57:16 +0200 yamsung lage <yamsung@...> wrote: > > Uhm... no veo por qué necesitarías esta clase. ¿Puedes poner un ejemplo? > > No entiendo lo que dices pero bueno trato de ponerte un ejemplo... > > Imaginate un programa en java que sea un simulador, entonces le debes > pasar un archivo (Xml, o cualquiera). En este archivo se especifican > unos objetos con sus datos miembros (ubicacion, color, etc) y sus > funciones (cambiar de color, cambiar de posicion, girar, etc). > > Bueno la idea es que cuando el programa reciba el archivo, lo abra, > identifique los objetos y los cree en tiempo de ejecución. > > Asi este archivo puede tener varios objetos, por ejemplo: Robot, caja, > camion, etc. Y estos a su vez varias atributos con varios metodos. > > Sergio, espero haberme hecho explicar > > > 2009/8/9 Sergio Arbeo <serabe@...>: > > > > > > 2009/8/9 yamsung lage <yamsung@...>: > > > >> > >> > >> Alguien tiene información de como crear una clase en tiempo de ejecucion > >> ?. > >> > >> Por ejemplo, tengo un nombre Robot, entonces en tiempo de ejecucion > >> quiero crear una clase de nombre Robot con varias funciones y > >> atributos, y esta misma clase poder usarla en el momento. > > > > > > Un saludo, > > > > Serabe > > > > -- > > http://sergio.arbeo.net > > http://www.serabe.com > > > -- Sebastian Gurin <sgurin@...> |
|
|
Re: Crear clase en tiempo de ejecución2009/8/9 yamsung lage <yamsung@...>:
> > >> Uhm... no veo por qué necesitarías esta clase. ¿Puedes poner un ejemplo? > > No entiendo lo que dices pero bueno trato de ponerte un ejemplo... Ok, he entendido parte. Necesitas crear un objeto con ciertos atributos y ciertos métodos. ¿Dónde se encontrarían las implementaciones de éstos? ¿O es más estilo XML-RCP? De todas formas, por lo que estás diciendo, tal vez encuentres algo por reflection. De todas formas, sigo sin ver la razón por la que necesitas una nueva clase y no una instancia de algo estilo: class MyOwnKindOfObjects { protected Hashtable<String,Object> attributes; protected Hashtable<String,java.lang.reflect.Method> methods; public MyOwnKindOfObject() {...} public getAttr(String name) {...} public setAttr(String name, Obj val) {...} public getMethod(String name) {...} public setMethod(String name, Method method) {...} } Un saludo, Sergio -- http://sergio.arbeo.net http://www.serabe.com |
|
|
Re: Crear clase en tiempo de ejecuciónTratare de responderte entre lineas:
> Ok, he entendido parte. Necesitas crear un objeto con ciertos > atributos y ciertos métodos. ¿Dónde se encontrarían las > implementaciones de éstos? Las implementaciones de estos estarian en un XML, PDDL, o en un archivo de texto cualquiera. ¿O es más estilo XML-RCP? No es lo mismo, porque en este se supone que ya la clase, los metodos y los atributos estan creados. En mi caso no, las clases, atributos y metodos tengo que crearlos dinamicamente. De todas formas, > por lo que estás diciendo, tal vez encuentres algo por reflection. De > todas formas, sigo sin ver la razón por la que necesitas una nueva > clase y no una instancia de algo estilo: Es que sino tengo la clase no puedo crear la instancia.... como te explicaba, en un archivo tengo lo necesario para crear la clase, y una vez logre hacerlo (que ya con el codigo que me paso sebastian podria hacerlo) puedo crear la instancia. Espero haberme hecho entender. Un saludo, 2009/8/10 Sergio Arbeo <serabe@...>: > > > 2009/8/9 yamsung lage <yamsung@...>: >> >> >>> Uhm... no veo por qué necesitarías esta clase. ¿Puedes poner un ejemplo? >> >> No entiendo lo que dices pero bueno trato de ponerte un ejemplo... > > Ok, he entendido parte. Necesitas crear un objeto con ciertos > atributos y ciertos métodos. ¿Dónde se encontrarían las > implementaciones de éstos? ¿O es más estilo XML-RCP? De todas formas, > por lo que estás diciendo, tal vez encuentres algo por reflection. De > todas formas, sigo sin ver la razón por la que necesitas una nueva > clase y no una instancia de algo estilo: > > class MyOwnKindOfObjects { > protected Hashtable<String,Object> attributes; > protected Hashtable<String,java.lang.reflect.Method> methods; > > public MyOwnKindOfObject() {...} > > public getAttr(String name) {...} > public setAttr(String name, Obj val) {...} > public getMethod(String name) {...} > public setMethod(String name, Method method) {...} > } > > Un saludo, > > Sergio > > -- > http://sergio.arbeo.net > http://www.serabe.com > |
|
|
|
|
|
DatePicker en swing y licenciasHola BUen dia:
BUeo es mi primera participacion en la lista, y bueno como es costumbre es dudas. Bueno vengo de un mundo de programacion de c# y python, pero bueno ahora quiero entrar al mundo de java y tengo dos dudas. 1.- Primero alguien conoce unn componente Datepicker para swing, veo muchos en el internet, y algunos no funcionan, o simplemente no aceptan ingreso por teclado y unicamente usando mouse, talvez alguien conozca en especial que usen teclado y mouse? 2.- Si desarrollo un aplicativo utilizando el Java 6 de Sun, el que esta en los repositorios de ubuntu, podria liberar mi codigo es decir no tener ningun tipo de restirccion de regalar mi codigo y que lo usen, obviamente ellos tendrian que instalar el java de sun en version 6. Tendria problemas con licencias? Gracias __________________________________________________ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar ------------------------------------ Para cancelar su subscripción a este grupo, envíe un mensaje de correo electrónico a: javaSpain-unsubscribe@... Enlaces a Yahoo! Grupos <*> Para visitar tu grupo en la web, ve a: http://es.groups.yahoo.com/group/javaSpain/ <*> La configuración de tu correo: Mensajes individuales | Tradicional <*> Para modificar la configuración desde la Web, visita: http://es.groups.yahoo.com/group/javaSpain/join (ID de Yahoo! obligatoria) <*> Para modificar la configuración mediante el correo: mailto:javaSpain-digest@... mailto:javaSpain-fullfeatured@... <*> Para cancelar tu suscripción en este grupo, envía un mensaje en blanco a: javaSpain-unsubscribe@... <*> El uso que hagas de Yahoo! Grupos está sujeto a las Condiciones del servicio de Yahoo!: http://es.docs.yahoo.com/info/utos.html |
|
|
Re: DatePicker en swing y licenciasHola Tany. Primero que nada, déjame decirte que los nuevos tópicos en una lista de correo se comienzan con un nuevo mail, y no respondiendo a un thread ya abierto. te respondo entre líneas sobre tud preguntas:
On Mon, 17 Aug 2009 08:26:17 -0500 Tany <tanymono@...> wrote: > Hola BUen dia: > > BUeo es mi primera participacion en la lista, y bueno como es costumbre > es dudas. Bueno vengo de un mundo de programacion de c# y python, pero > bueno ahora quiero entrar al mundo de java y tengo dos dudas. > > 2.- Si desarrollo un aplicativo utilizando el Java 6 de Sun, el que esta > en los repositorios de ubuntu, podria liberar mi codigo es decir no > tener ningun tipo de restirccion de regalar mi codigo y que lo usen, > obviamente ellos tendrian que instalar el java de sun en version 6. > Tendria problemas con licencias? Según yo lo entiendo, el tema de las licencias va más por el lado de las librerías que por el lado de la jdk o ide utilizado para desarrollar. Piensa que si tu programa java está bien hecho, debería funcionar en cualqueir jdk, ya sea la de sun, la de gnu o cualquier otra (hay miles). Desde el punto de vista de las licencias, la jdk debe ser vista más como un estándar que como una librería. La licencia de tu código es independiente de la licencia bajo la cual está liberada la jdk utilizada para desarrollar en un sistema X en un momento X. Ahora bien , si tu aplicativo utiliza alguna librería de 3eros (algún .jar externo a la jdk) y esa librería está licenciada solamente bajo la GPL (no lgpl), la gpl te obliga a que tu código sea gpl. Las licencias que no tienen esta restricción son apache, lgpl, creative, bsd, eclipse, mit, etc en conclusión, preocupate solo por las licencias de las librerías, no por las licencias del entorno de desarrollo (jdk, ide, etc). > > Gracias > > > __________________________________________________ > Correo Yahoo! > Espacio para todos tus mensajes, antivirus y antispam _gratis! > _Abr_ tu cuenta ya! - http://correo.yahoo.com.ar > > > ------------------------------------ > > Para cancelar su subscripci_n a este grupo, env_e un mensaje de correo electr_nico a: > javaSpain-unsubscribe@... > > Enlaces a Yahoo! Grupos > > > > > > -- Sebastian Gurin <sgurin@...> |
| Free embeddable forum powered by Nabble | Forum Help |