PDA

Ver la versión completa : Mis dudas de java



Drumpi
06/02/2011, 02:23
Hola a todos:

Para no mantener secuestrado el hilo de PSP2 (ya que han pagado un sustancioso rescate :D:D:D) pues abro un hilo para hacer mis preguntillas sobre java, eclipse y cualquier cosa relacionada.
Si alguien quiere añadir las suyas, el espacio es gratis ;)
:lamer:

Bueno, finalmente he echado a andar mis primeros proyectos de ventanas (swing) sin tener que compilar 20 veces: ha sido instalar el java 1.5 (bueno, quien dice instalar, dice ejecutar el auto-descomprimible de la web de java, que ya podían avisar, que me he mirado el PATH 20 veces a ver qué había cambiado) y todo va como la seda ¿todo? no, los proyectos que ya tenía hechos se resisten y siguen empeñados en compilar con la 1.6.
Los proyectos nuevos los pongo como java 1.5 en una de las opciones iniciales y van, pero los que empecé como 1.6, ni añadiendo el java 1.5 a la lista de JRE disponibles, ni cambiando en las propiedades del proyecto la versión del compilador (al menos, eso creo que es): sigue saliendo error y sigue marcando java versión 6.0.22.

Cómo odio eclipse.

Otra cosa es que me recomiendan por aquí que use NetBeans, que por lo que he leido, es un editor de java, con editor visual de ventanas swing. Lo estoy pensando pero cada vez se usa más eclipse, pero si eclipse no funciona con el JRE 1.6, aquí falla algo :confused:

aitorpc
06/02/2011, 08:53
Yo he empezado hace poco con Java asi que me interesa mucho este hilo, aunque lo que se y nada es casi lo mismo :)

enkonsierto
06/02/2011, 09:12
Cómo odio eclipse.

No sabes lo que dices...

Wave
06/02/2011, 10:39
No sabes lo que dices...
Pues si, no sabe lo que dice...
Prueba desde Project->Properties->Java Build Path->Libraries y añade las de la version 1.5, y en Java Compiler tambien la 1.5, claro

Estopero
06/02/2011, 10:50
Yo uso netbeans para PHP y C, y me parece un IDE brutal. Aunque también es cierto que yo venía del Notepad++ :)

Intenté usar eclipse pero me dió la sensación de que era tremendamente pesado. Netbeans me parece más ágil en general.

Es probable que me ponga a aprender Java, ya te diré si cambié a eclipse o no entonces XD

^MiSaTo^
06/02/2011, 10:56
Yo uso netbeans para PHP y C, y me parece un IDE brutal. Aunque también es cierto que yo venía del Notepad++ :)

Intenté usar eclipse pero me dió la sensación de que era tremendamente pesado. Netbeans me parece más ágil en general.

Es probable que me ponga a aprender Java, ya te diré si cambié a eclipse o no entonces XD

Agil Netbeans??? O_O pues será ahora jomio. De todos modos para PHP y C no te recomiendo ni Netbeans ni eclipse (bueno tienes el PHPEclipse este... pero ...) ultraedit o similar y a correr ;)

Sino tienes 200 IDES como Aptana Studio (para PHP) que está basado en Eclipse y va bastante bien (aunque personalmente a mi no me gusta).

Respondiendo a Drumpi.. La verdad que Netbeans para hacer interfaces gráficas es mucho más sencillo de usar. Pero lo siento, trar muchos años programando en Java, yo tb empecé en Netbeans (el 4.0 cuando salió... ains... qué recuerdos) pero Eclipse le da como mil vueltas.

Me siguen mandando CDs con las nuevas versiones de Netbeans. El último que probé es el 6.0 y se ha vuelto infinitamente más pesado que antes y (al menos en mi PC) más inestable. Ahora ya no se por qué versión va.

Pero sí, lo que si es cierto, que yo las GUIs las hacía con Netbeans, luego copiaba el código y ya el resto de cosas desde Eclipse. Y cuidado porque de vez en cuando Netbeans mete una cantidad de mierda en el código de aupa!

aitorpc
06/02/2011, 11:30
Yo aun ando con el bloc de notas porque aun solo escribo ejemplos chorras de principiantes para ejecutar en msdos, aunque es un poco rollo el tema tabulaciones, etc.

Por cierto, a parte de los libros que me recomendo Misato de "Aprender Java como si estuvieses en primero" y "Piensa en Java", me he comprado (realmente es el unico que he comprado, el resto los he imprimido) "Head First Java", que no es una biblia de Java pero para principiantes me esta gustando mucho, es estilo a los libros de aprendizaje para Dummies, eso si, esta en ingles, pero muy recomendable.

Edito: me he pasado del bloc de notas al notepad++ porque me habia olvidado de el y es mas comodo :)

dr_bacterio
06/02/2011, 12:01
Buenas,

lo que te ha dicho Wave te debería funcionar y si no prueba a hacerte un ant para compilar y construir el proyecto ;). No me cansaré de repetirlo, si queréis un libro de Java que os enseñe a programar como un profesional, este es el vuestro:
Agile Java(TM): Crafting Code with Test-Driven Development [Paperback] - Jeff Langr (Author)
Yo últimamente me estoy pasando poco a poco a VIM pero cuesta los suyo XD

!SALUDOS¡

jduranmaster
06/02/2011, 12:10
Yo siempre he usado para programar los editores de texto plano como el Crimson editor y la consola de comandos. Tanto para C como para Java, y creeme he llegado a realizar autenticas virguerias de interfaces gráficas en Java sin necesidad el gestor de ayuda que tienen el eclipse o el netbeans.

Ahora, si que es cierto que para gente principiante que empieza con java el eclipse es una gran ayuda por el tema del auto completado y demás, asi que no lo menosprecies.

aitorpc
06/02/2011, 12:33
Buenas,

lo que te ha dicho Wave te debería funcionar y si no prueba a hacerte un ant para compilar y construir el proyecto ;). No me cansaré de repetirlo, si queréis un libro de Java que os enseñe a programar como un profesional, este es el vuestro:
Agile Java(TM): Crafting Code with Test-Driven Development [Paperback] - Jeff Langr (Author)
Yo últimamente me estoy pasando poco a poco a VIM pero cuesta los suyo XD

!SALUDOS¡

Es bueno ese libro? De que nivel es?

dr_bacterio
06/02/2011, 12:40
Buenas,

el libro parte de un nivel principiante, pero te explica como construir software de forma que después sea fácilmente mantenible y ampliable. Te enseña como utilizar el Test Drive Development para evitar perder horas debugando programas a posteriori. Superrecomendable.

!SALUDOS¡

SilentSei
06/02/2011, 13:38
Misato, Netbeans 4.0...ha mejorado mucho desde entonces. Como ide está muy bien, tiene menos plugins que Eclipse, pero tiene compatibilidad con GlassFish de serie. Yo es el que utilizo en el curro y la verdad que va estupendo. Solo echo un poco de menos el subeclipse de Tigris porque el plug-in de svn de netbeans tiene menos opciones, aunque instalandote el tortoise svn esto se soluciona.

Takun
06/02/2011, 13:57
Yo te recomiendo que uses eclipse, puede parecer un poco rollo al principio pero con la práctica es muy útil.

^MiSaTo^
06/02/2011, 14:51
Misato, Netbeans 4.0...ha mejorado mucho desde entonces. Como ide está muy bien, tiene menos plugins que Eclipse, pero tiene compatibilidad con GlassFish de serie. Yo es el que utilizo en el curro y la verdad que va estupendo. Solo echo un poco de menos el subeclipse de Tigris porque el plug-in de svn de netbeans tiene menos opciones, aunque instalandote el tortoise svn esto se soluciona.

Hombre, el último que usé, si me relees fue el 6.0 ;) He dicho que empecé con la 4.0 y he estado usando Netbeans hasta la 6.0. Pero lo siento, yo prefiero Eclipse. Me va muchísimo mejor con él xD

De hecho ahora es lo que tengo instalado para Android.

EDIT: de hecho mi anterior post dice esto:


yo tb empecé en Netbeans (el 4.0 cuando salió... ains... qué recuerdos) pero Eclipse le da como mil vueltas.

Me siguen mandando CDs con las nuevas versiones de Netbeans. El último que probé es el 6.0 y se ha vuelto infinitamente más pesado que antes y (al menos en mi PC) más inestable. Ahora ya no se por qué versión va.

GameMaster
06/02/2011, 16:05
yo con la 3.1 creo que era.

bernard
06/02/2011, 16:51
A mi me gusta más netbeans, me da la sensación de que esta todo más organizado (las preferencias en Eclipse son un auténtico caos con ese sistema de menús en árbol), aún así, hay que reconocer que cada día es más lento y pesado. Mi AMD 64 3000+ tarda menos en cargar el SO que abrir Netbeans.

chemaris
06/02/2011, 17:29
a mi netbeans cada dia me gusta mas, es cierto que es muy pesado y necesita un buen bicho, pero es completisimo y cada vez em estoy acostumbrando mas a trabajar con él, por contra nunca he terminado de hacerme a eclipse

Drumpi
07/02/2011, 00:33
No sabes lo que dices...

Hombre, debo reconocer que el autocompletado, con las listas de funciones y la ayuda es un gran aliado, sobre todo ahora, que estoy aprendiendo y voy bicheando funciones nuevas.
Pero eso de que esté escribiendo una línea, y me autocomplete con ");" y se ponga el cursor en medio no me gusta, porque escribo el ";" y le doy a intro, y me encuentro que ha bajado el punto y coma a la línea inferior. Ya ni os cuento el cachondeo de cambiar de línea o pulsar fin para ir al final cuando me depliega la lista de funciones: es molesto y me obliga a pulsar el cursor derecho unas cuantas veces.


Pues si, no sabe lo que dice...
Prueba desde Project->Properties->Java Build Path->Libraries y añade las de la version 1.5, y en Java Compiler tambien la 1.5, claro

Ya lo intenté, incluso cambiando las opciones generales, e insistía en usar la 1.6.


Respondiendo a Drumpi.. La verdad que Netbeans para hacer interfaces gráficas es mucho más sencillo de usar. Pero lo siento, trar muchos años programando en Java, yo tb empecé en Netbeans (el 4.0 cuando salió... ains... qué recuerdos) pero Eclipse le da como mil vueltas.

(...)

Pero sí, lo que si es cierto, que yo las GUIs las hacía con Netbeans, luego copiaba el código y ya el resto de cosas desde Eclipse. Y cuidado porque de vez en cuando Netbeans mete una cantidad de mierda en el código de aupa!

Esto último es lo que tenía pensado hacer, sé que no existe una herramienta mágica en este sentido, ya me tuve que pelear en el laboratorio de instrumentación con algo parecido (CVI/Labwindows y su... creo que era visualbasic, o visual C, no sé: escribía en C y tenía callbacks :lol:).
Yo no sé a vosotros, pero desarrollar un IDE a base de escribir valores (que la mitad de las veces no se ajustan a lo dicho, o al menos, no lo parece) es un peñazo de mucho cuidado, y muy lento de desarrollar (y lo digo por experiencia propia con el diseño de varios juegos). Prefiero que un editor me deje las líneas preparadas, sobre todo las de posición y tamaño, y ya resolveré el tema de la basura (acostumbrado a limpiar mi propio código... :lol).

Lo que me asombra de netbeans es su peso: 400MB de descarga sólo la versión de Java (SE, EE y ME) y más de 600MB de instalación, JDK aparte.


PD: acabo de terminar con las ventanas, ya se hacer formularios (teóricamente hablando, y no muy buenos, por cierto :D) y empiezo con memoria dinámica. Tres capítulos de introducción y nada nuevo bajo el sol. En el cuarto la primera sorpresa: no existe Free, por lo que si el tema de punteros era delicado, ahora no sabremos cuándo:
-se libera una zona de memoria.
-hay un puntero señalando a una zona de memoria no válida porque se ha eliminado.
Tiene sus ventajas, desde luego, pero me he tirado más de una noche peleándome con los punteros de C++, y más de una semana desarrollando listas enlazadas de procesos con Bennu... y se me hace raro. :lol:

^MiSaTo^
07/02/2011, 00:44
En el cuarto la primera sorpresa: no existe Free, por lo que si el tema de punteros era delicado, ahora no sabremos cuándo:
-se libera una zona de memoria.
-hay un puntero señalando a una zona de memoria no válida porque se ha eliminado.
Tiene sus ventajas, desde luego, pero me he tirado más de una noche peleándome con los punteros de C++, y más de una semana desarrollando listas enlazadas de procesos con Bennu... y se me hace raro. :lol:

Como te habrán dicho en el manual que estás leyendo (y te hemos dicho en otros posts nosotros), en Java no existen los punteros. (Bueno, existen pero tú no los tocas ;))

Al correr encima de la JVM, es el garbage collector quien se encarga de manejar todo el tema de la memoria. Si quieres liberar un objeto lo pones a null y listo, el GC ya se lo llevará cuando sea necesario.

Hay maneras de invocar al GC directamente, pero de momento no lo vas a necesitar y mejor que no toques si no sabes lo que haces ;)

De hecho yo sólo lo he usado para temas que necesitan optimización a saco (por ejemplo, en Android para hacer jueguillos, cuantos menos recursos en memoria mejor) Pero la verdad que en todos estos años, no he necesitado invocar al GC a mano más que 2 o 3 veces para algo muy muy puntual.

Si estas cosas básicas no las has leído en el manual, descártalo. Lo primero que debes aprender es cómo "funciona" Java.

Ah y lo del autocompletar funciones te va a venir de perlas. Con la cantidad de clases que tiene Java... no te las vas a aprender todas en tu vida XD

Drumpi
07/02/2011, 01:04
Bueno, he dicho "punteros" por llamarlo de alguna forma :D es la costumbre de relacionar nodos y null a punteros.

Lo del GC ya sabía que existía, fue una de las "pegas" que les ponían los autodenominados "informáticos de verdad" (una sub-especie de los informáticos que se suelen dar en las aulas de las universidades de informática y que presumen de conocimientos :D daría para un blog entero hablar de ellos).
Aquí todo son clases... y eso me recuerda muchísimo a Bennu, por lo que estoy más que familiarizado con el tema, pero incluso allí tenía que borrar yo las cosas, y podía usar punteros :lol:

PD: ya no tiene remedio, me he empeñado en terminar este curso, y hasta que no lo acabe no hay nada que hacer, después me pondré con el de "aprenda java como si estuviese en primero", aunque supongo que me saltaré la mitad ^^U

PD2: sí, he visto que hay bastantes librerías con cientos de clases sólo entre las que vienen por defecto (ya me he armado bastantes líos entre javax.swing.events y java.awt.events con las dichosas ventanas), pero de momento a ver si me centro en lo básico y en awt y swing, que son las que estoy usando por el momento (ya habrá tiempo de explorar otras tierras en cuanto java forme parte de mi CV :lol:).

juanvvc
07/02/2011, 06:21
O mucho han cambiado las cosas, o no deberías mezclar awt y swing: son entornos de ventanas diferentes con filosofías diferentes. No conozco razón ninguna para juntarlos, escoge uno y tira siempre con ése (swing, a menos que no esté disponible en la plataforma objetivo) Aunque hace mucho que no toco java...

Tengo en el recuerdo que awt es más similar a la X puras, o a la librería original de Windows. Swing en cambio tiene una filosofía MVC similar a Qt/GTK/MFC/.Net, y por tanto lo que aprendas con swing podrás aprovecharlo en cualquier otro entorno moderno de ventanas.

Y aún así tampoco le dediques mucho tiempo a aprender la GUI, que cuando pases a móviles (J2ME, Android) las librerías son total y completamente diferentes :D

^MiSaTo^
07/02/2011, 09:54
O mucho han cambiado las cosas, o no deberías mezclar awt y swing: son entornos de ventanas diferentes con filosofías diferentes. No conozco razón ninguna para juntarlos, escoge uno y tira siempre con ése (swing, a menos que no esté disponible en la plataforma objetivo) Aunque hace mucho que no toco java...

Tengo en el recuerdo que awt es más similar a la X puras, o a la librería original de Windows. Swing en cambio tiene una filosofía MVC similar a Qt/GTK/MFC/.Net, y por tanto lo que aprendas con swing podrás aprovecharlo en cualquier otro entorno moderno de ventanas.

Y aún así tampoco le dediques mucho tiempo a aprender la GUI, que cuando pases a móviles (J2ME, Android) las librerías son total y completamente diferentes :D

Completamente de acuerdo. No puedes mezclar swing y awt [Ahhh]
Yo también te recomiendo swing y también te recomiendo en centrarte en aprender Java, y no tanto en cómo va lo de hacer "ventanitas" porque luego depdende de para lo que lo vayas a usar.
Por ejemplo en el 90% de las consultoras se usa J2EE y lo del swing no lo he visto yo en un trabajo nunca xD
Luego eso, Android tiene su propio sistema de GUIs... Vamos, mejor que aprendas bien cómo va java aunque sea con programas en la consola a que te centres en eso ;)

pakoito
07/02/2011, 10:05
En mi uni usan jDeveloper para enseñar java. También tenemos que bajar a la poza a por agua fresca, y coger candelas del buhonero para iluminar las aulas.

bernard
07/02/2011, 16:16
En mi uni usan jDeveloper para enseñar java. También tenemos que bajar a la poza a por agua fresca para iluminar las aulas.
¿Algo así?

http://www.youtube.com/watch?v=AZ44DDRA-Pw

Drumpi
07/02/2011, 20:16
Bueno, lo de las ventanitas es porque quería hacerme un IDE/compilador para mi editor de novelas gráficas, porque se puede crear a base de texto, pero es lo más cansino que ha pario madre (sobre todo por la de veces que se repiten determinadas funciones, o tener que mirar el número de índice de las líneas de texto o imágenes), pero si me decís que pase pues estoy abierto a cualquier tipo de consejo.

Estoy aprendiendo, así que necesito algo para diseñar ventanas que me sirva para:
-Dicho compilador.
-Trabajar.
-Crearme mis cosillas (juegos, deskmates y desarrollar para android).
Preferiblemente en ese orden de prioridad :D

PD: en mi facultad usábamos 386 con W95 para simular circuitos electrónicos :lol:

^MiSaTo^
07/02/2011, 20:23
Bueno, lo de las ventanitas es porque quería hacerme un IDE/compilador para mi editor de novelas gráficas, porque se puede crear a base de texto, pero es lo más cansino que ha pario madre (sobre todo por la de veces que se repiten determinadas funciones, o tener que mirar el número de índice de las líneas de texto o imágenes), pero si me decís que pase pues estoy abierto a cualquier tipo de consejo.

Estoy aprendiendo, así que necesito algo para diseñar ventanas que me sirva para:
-Dicho compilador.
-Trabajar.
-Crearme mis cosillas (juegos, deskmates y desarrollar para android).
Preferiblemente en ese orden de prioridad :D

PD: en mi facultad usábamos 386 con W95 para simular circuitos electrónicos :lol:

Android tiene sus propias librerías, entre otras cosas para las GUIs así que si es para eso, pasa de swing y awt porque no va ni parecido xD

Mi consejo:
- aprende java
- aprende a hacer cosas gráficas
- aprende Android

En ese orden xD

Drumpi
10/02/2011, 01:09
Android tiene sus propias librerías, entre otras cosas para las GUIs así que si es para eso, pasa de swing y awt porque no va ni parecido xD

Mi consejo:
- aprende java
- aprende a hacer cosas gráficas
- aprende Android

En ese orden xD

Y me lo dices después de recomendarme un libro con un 15-20% de contenido AWT :D:D:D

Nah, todo lo que se aprenda, mejor, nunca sabes a quien te vas a encontrar y con qué manías/preferencias :)
Seguiré los pasos que me propones, pero sigo sin descartar el tema formularios con awt o swing para mis cosillas en PC.

Por cierto ¿Hay alguna diferencia entre desarrollar para un PC con Android que para una tablet o un móvil? aparte de lo típico (pantalla táctil, teclado, velocidad de CPU y tamaño de RAM). ¿Sirven los mismos binarios?

^MiSaTo^
10/02/2011, 01:10
Y me lo dices después de recomendarme un libro con un 15-20% de contenido AWT :D:D:D

Nah, todo lo que se aprenda, mejor, nunca sabes a quien te vas a encontrar y con qué manías/preferencias :)
Seguiré los pasos que me propones, pero sigo sin descartar el tema formularios con awt o swing para mis cosillas en PC.

Por cierto ¿Hay alguna diferencia entre desarrollar para un PC con Android que para una tablet o un móvil? aparte de lo típico (pantalla táctil, teclado, velocidad de CPU y tamaño de RAM). ¿Sirven los mismos binarios?

Si implementan una JVM "estandard" sí, sirven los mismos. Pero si no (como es caso de android) va a ser que no XD
Y por lo general los móviles o bien llevan J2ME o bien, Android. Pero no conozco ninguno que tenga J2SE...


EDIT: el libro ese me lo leí en el 2004, obviamente no puedo acordarme de cómo era xD Un 15% de AWT tampoco es malo, pero lo que si recuerdo es que a mi me quedaron los conceptos muy claros con él y siempre me lo han recomendado (incluso a día de hoy oigo a gente que lo recomienda para empezar por ser muy básico y estar bien explicadito).

Drumpi
10/02/2011, 01:50
No no, si yo pregunto por todos los cacharros android: si un juego para el android de un PC sirve para una tablet o un móvil Android.
No preguntaba si java funciona en android, porque sé que es preguntar si un programa en C funciona en Windows y Linux ;) Digo de cacharro Android a cacharro android :)

^MiSaTo^
10/02/2011, 01:54
No no, si yo pregunto por todos los cacharros android: si un juego para el android de un PC sirve para una tablet o un móvil Android.
No preguntaba si java funciona en android, porque sé que es preguntar si un programa en C funciona en Windows y Linux ;) Digo de cacharro Android a cacharro android :)

Bueno esque una de las ventajas de Java es precisamente que es multiplataforma ;)
Ten en cuenta que Java (ya sea Android, J2SE o J2EE) corre encima de una máquina virtual (en caso de Android Dalkiv) por tanto EN TEORÍA funciona igual en todos lados.

La práctica es que en Android no hay un "estandard" que sigan los fabricantes (Google en su web tiene unos "mínimos" de compatibilidad en sus dispositivos, pero la experiencia me ha demostrado muchas veces que los fabricantes se lo pasan por el forramen), así que normalmente las cosas van pero puede darte errores. Mismamente mi pulpinator en el HTC Magic funciona perfecto, en el Nexus One de un amigo salía descuadrado, en un Galaxy de estos con Android tb hacía cosas raras... etc.

Android, por desgracia, es así T_T

pakoito
10/02/2011, 02:04
¿Alguien me puede recordar como chuscaban los Iterators? nunca me quedé con la tonadilla y ahora nos los piden sin saberlos en Noruega.

Nathrezim
10/02/2011, 08:31
¿Alguien me puede recordar como chuscaban los Iterators? nunca me quedé con la tonadilla y ahora nos los piden sin saberlos en Noruega.

¿Los que vienen implícitos en los for?

List <String> lista=new ArrayList<String>();
.
.
.
for(String elemento : lista)
{
System.out.println(elemento);
}

turco
10/02/2011, 08:56
Drumpi, después de hacer cosillas en AWT y en Swing, te digo lo que he sacado en claro. AWT lo puedes mirar por curiosidad, pero Swing es más nuevo, implementa más componentes, y garantiza que la aplicación mantendrá el mismo aspecto con independencia de dónde la ejecutes.

No se debe mezclar porque cada librería dibuja de forma diferente y en tiempos diferentes, por lo que te puedes encontrar que un componente AWT se pinte por encima de uno Swing aunque realmente esté por debajo y cosas así.

Para hacer la GUI en Swing, he tenido que hacer un montón de formularios en mi trabajo, y normalmente sólo uso como gestor de esquema la clase GridBagLayout, con su correspondiente GridBagConstraint. Sabiendo utilizar bien esas dos clases, la distribución de componentes en la GUI te será muy sencilla.

Saludos.

pakoito
11/02/2011, 02:08
¿Los que vienen implícitos en los for?

List <String> lista=new ArrayList<String>();
.
.
.
for(String elemento : lista)
{
System.out.println(elemento);
}
No, aqui nos han pedido la declaración directa

Iterator <Clase> it = ClaseMaker.defaultMaker();

< - >
Al final ha funcionado sólo. Ahora solo falla que aparte de paths locales acepte paths de archivos online.

Drumpi
11/02/2011, 02:28
Bueno esque una de las ventajas de Java es precisamente que es multiplataforma ;)
Ten en cuenta que Java (ya sea Android, J2SE o J2EE) corre encima de una máquina virtual (en caso de Android Dalkiv) por tanto EN TEORÍA funciona igual en todos lados.

La práctica es que en Android no hay un "estandard" que sigan los fabricantes (Google en su web tiene unos "mínimos" de compatibilidad en sus dispositivos, pero la experiencia me ha demostrado muchas veces que los fabricantes se lo pasan por el forramen), así que normalmente las cosas van pero puede darte errores. Mismamente mi pulpinator en el HTC Magic funciona perfecto, en el Nexus One de un amigo salía descuadrado, en un Galaxy de estos con Android tb hacía cosas raras... etc.

Android, por desgracia, es así T_T

Vamos, que al final, el SO que iba a unificar los criterios de Java, ha seguido el mismo camino que su antecesor: se necesita un código distinto según la familia de aparatos :D:D:D


Drumpi, después de hacer cosillas en AWT y en Swing, te digo lo que he sacado en claro. AWT lo puedes mirar por curiosidad, pero Swing es más nuevo, implementa más componentes, y garantiza que la aplicación mantendrá el mismo aspecto con independencia de dónde la ejecutes.

No se debe mezclar porque cada librería dibuja de forma diferente y en tiempos diferentes, por lo que te puedes encontrar que un componente AWT se pinte por encima de uno Swing aunque realmente esté por debajo y cosas así.

Para hacer la GUI en Swing, he tenido que hacer un montón de formularios en mi trabajo, y normalmente sólo uso como gestor de esquema la clase GridBagLayout, con su correspondiente GridBagConstraint. Sabiendo utilizar bien esas dos clases, la distribución de componentes en la GUI te será muy sencilla.

Saludos.

Yo no los mezclo, quien los mezcla es el actual tutorial, pero ojo, no los componentes, sino los gestores de eventos: para los eventos estilo ActionEvent usa awt.event.* mientras que para los ItemEvent o ChangeEvent usa swing.event.* Esos son los que me llevaron en su momento a confusión.

PD: ya casi he terminado el curso. He detectado un par de errores en los ejemplos de listas enlazadas (nada grave) y ya sé manejarme con ellas. Muy fácil, pero también he visto los peligros del automatismo de limpieza: en otro de los tutoriales, un ejemplo de lista doblemente enlazada se olvidaba de eliminar la dirección de uno de los punteros, y dejaba un nodo activo, no se veía en el programa pero sé que está ahí (Drumpi me lo ha dicho, dice que es muy majo y que hasta le invitó a un cubata :D).

Drumpi
20/02/2011, 21:55
Bueno, pues ya está el foro de nuevo en marcha, así que puedo volver por aquí :D

He hecho progresos, sí, ya puedo mostraros mi primer juego en Java: el Buscaminas. No sé por qué, pero a mi sólo me funciona en la primera ejecución en mi Windows (en Linux va de miedo), tengo que ejecutarlo con el comando "java -jar" si no quiero problemas, pero ya me han dicho otras personas que les va bien :confused:
Cosas de los duendes informáticos.

Pero bueno, es el fruto de tres semanas de estudio y un uso sencillo de swing a pelo :lol:


Por otro lado, he empezado el tutorial que me recomendaste, Misato, ¡¡¡y vaya comienzo!!! menos mal que había hecho el otro tutorial antes, porque en el primer capítulo te lanzan a la cara un ejemplo con herencia, uso de interfaces, manejo de gráficos... menos mal que es como si estuvieras en primero, imagina que te dicen "como si ya supieras programar" :lol:
Me ha costado pero lo he superado (eso sí, se me han aclarado de golpe muchas dudas que tenía del otro tutorial :D).

De momento porque estoy con java básico, pero este sólo abarca java 1.1 y 1.2, a saber lo que hay hasta java 1.5 o el nuevo java 1.6

^MiSaTo^
21/02/2011, 00:08
Tu buscaminas me funciona... pero veo dónde está cada cosa xDDD Es normal? Sale cada cuadrito con lo que tiene "dentro" puesto en color gris claro xD

Por cierto en Mac funciona bien, doble click en el .class y ya me va XD Aun así... si pones el error que te da en windows miramos de lo que es.

Drumpi
22/02/2011, 01:37
Juas, es el método de ocultación del tutorial: poner botón y letras del mismo color. Para la próxima, array bidimensional y setText :D:D:D

¿El error? pues... no arranca. Es decir, ejecuto el juego y funciona perfectamente. 2, 5, 9 partidas, todo bien. Cierro... y ya no puedo volver a abrir ninguna aplicación de java hasta que reinicie (bueno, creo que eclipse sí se abre, el maldito es indestructible). Ni avisos ni nada, no va, ni por línea de comandos.
Y en Linux con el OpenJDK (que es el que viene por defecto ¿algún problema entre la comunidad ubuntu y SUN?) va de maravilla.

A las malas puedo subir el .java, no es tampoco nada del otro mundo.

Por cierto ¿Con qué tipo de juegos es mejor iniciarse en Java? ¿sabiendo hacer juegos en C+sdl (es lo más parecido que se me ocurre a Bennu) se puede hacer cualquier cosilla en 2D o hay problemas diseñando scrolls? ¿Cual es el "hola mundo" en este caso? Lo digo porque en Bennu, el clásico juego de novato es el matamarcianos, pero voy con un poco de prisa para eso ^^U
Y que peñazo lo de las clases internas del tutorial.

^MiSaTo^
22/02/2011, 10:41
Juas, es el método de ocultación del tutorial: poner botón y letras del mismo color. Para la próxima, array bidimensional y setText :D:D:D

¿El error? pues... no arranca. Es decir, ejecuto el juego y funciona perfectamente. 2, 5, 9 partidas, todo bien. Cierro... y ya no puedo volver a abrir ninguna aplicación de java hasta que reinicie (bueno, creo que eclipse sí se abre, el maldito es indestructible). Ni avisos ni nada, no va, ni por línea de comandos.
Y en Linux con el OpenJDK (que es el que viene por defecto ¿algún problema entre la comunidad ubuntu y SUN?) va de maravilla.

A las malas puedo subir el .java, no es tampoco nada del otro mundo.

Por cierto ¿Con qué tipo de juegos es mejor iniciarse en Java? ¿sabiendo hacer juegos en C+sdl (es lo más parecido que se me ocurre a Bennu) se puede hacer cualquier cosilla en 2D o hay problemas diseñando scrolls? ¿Cual es el "hola mundo" en este caso? Lo digo porque en Bennu, el clásico juego de novato es el matamarcianos, pero voy con un poco de prisa para eso ^^U
Y que peñazo lo de las clases internas del tutorial.
Tipo de juegos? pues no lo se, el mismo que usarias para hacer un hello world en C++ xD Yo siempre hago un pong o un arkanoid como hello world porque me se el código de memoria xD De hecho mira mi hello world en HTML5: http://misato.es/canvas/pong.html y http://misato.es/canvas/arkanoid.html
Es lo que siempre hago con cualquier lenguaje.

De todos modos, cada cosa para lo que es, yo no usaría java con sus librerías gráficas para hacer juegos. Si acaso usaría java + openGL. Aún así entre Java y C++.... prefiero C++ para juegos. Java es muy bueno para muchas cosas, pero personalmente creo que aún sigue siendo pesado (cada vez menos eso si) y eso para los juegos no es lo mejor

juanvvc
22/02/2011, 11:26
Y en Linux con el OpenJDK (que es el que viene por defecto ¿algún problema entre la comunidad ubuntu y SUN?) va de maravilla.

OpenJDK es de Sun, así que problemas ninguno :confused:

Tendrías que ver hace unos años, cuando Sun no tenía versión libre y las distribuciones solo incluían el GCJ (GNU Java) donde no funcionaba prácticamente nada :D Lo primero que había que hacer era desinstalar el GCJ y descargar el JDK (gratuito pero no libre) directamente de la página de Sun

^MiSaTo^
22/02/2011, 11:29
OpenJDK es de Sun, así que problemas ninguno :confused:

Tendrías que ver hace unos años, cuando Sun no tenía versión libre y las distribuciones solo incluían el GCJ (GNU Java) donde no funcionaba prácticamente nada :D Lo primero que había que hacer era desinstalar el GCJ y descargar el JDK (gratuito pero no libre) directamente de la página de Sun

Madre mía el GNUJava xDD Aquello si que iba como el culo xDDDD

Drumpi
22/02/2011, 21:03
Vaya, pensaba que Java tenía sus propias librerías gráficas (no creía que los móviles de hace unos años pudiesen con una librería del tipo openGL ^^U).
Que tampoco me asusta hacerme mis propias rutinas de dibujado, ojo, que al fin y al cabo, sólo es rellenar una matriz de memoria con valores antes de enviarlos al buffer :p

JuanVVC: ¿entonces cómo es que existen el los repositorios el OpenJDK, el JDK y el JRE por separado? ¿reminiscencias del pasado?

jduranmaster
22/02/2011, 21:06
Madre mía el GNUJava xDD Aquello si que iba como el culo xDDDD

atencion, quien use GNUJAVA que lo desinstale de su PC xq: es el pedazo de mierda mas grande que yo haya visto. Y todo por la mania del opensource (cuando el JDK origianl ya va de **** madre), no se quien hizo aquello pero es para pegarle 3 ostias y deportarlo de su pais en una balsa por el indico. Da muchisimos problemas.

^MiSaTo^
22/02/2011, 21:07
Vaya, pensaba que Java tenía sus propias librerías gráficas (no creía que los móviles de hace unos años pudiesen con una librería del tipo openGL ^^U).
Que tampoco me asusta hacerme mis propias rutinas de dibujado, ojo, que al fin y al cabo, sólo es rellenar una matriz de memoria con valores antes de enviarlos al buffer :p

JuanVVC: ¿entonces cómo es que existen el los repositorios el OpenJDK, el JDK y el JRE por separado? ¿reminiscencias del pasado?

Java es un lenguaje de propósito general, no orientado a juegos. Ya tiene sus librerías gráficas: swing y awt. Pero para juegos desde luego no es la mejor opción.

Y vamos a ver...
OpenJDK - JDK libre de SUN
JDK - pues lo que dice el nombre, JDK de sun
JRE - el Java Runtime Environement de SUN

no es lo mismo el JDK que el JRE, esto es el JDK es el "SDK" de java, mientras que el JRE es sólo la máquina virtual y lo que hace falta para que esta funcione (por así decirlo).

Es por eso que hay esas 3 cosas en repositorios, el OpenJDK es libre, los otros 2 son los propietarios de sun ;) Y bueno normalmente si no vas a programar, no te vas a instalar el JDK... querrás sólo el jre ;)

< - >

atencion, quien use GNUJAVA que lo desinstale de su PC xq: es el pedazo de mierda mas grande que yo haya visto. Y todo por la mania del opensource (cuando el JDK origianl ya va de **** madre), no se quien hizo aquello pero es para pegarle 3 ostias y deportarlo de su pais en una balsa por el indico. Da muchisimos problemas.

JAJAJAJAJAJAJAJAJA yo hacía años que no oía hablar de él pero en su día lo recuerdo como un cáncer si xD

jduranmaster
22/02/2011, 21:16
Vaya, pensaba que Java tenía sus propias librerías gráficas (no creía que los móviles de hace unos años pudiesen con una librería del tipo openGL ^^U).


creo que te lo han contestado, pero java tiene librerias gráficas propias como SWING (la mejor :awsome:) y AWT para la realizacion de interfaces gráficas de usuario, lo que ocurre es que para juegos pues como que no.

Existen por ahi proyectos de ports de librerias como OPENGL en java, la prueba la tienes en los ports a java de Quake y Quake 2 que los usan y el futurible port de Quake 3 a java tmb las usará.

Drumpi
22/02/2011, 21:17
Java es un lenguaje de propósito general, no orientado a juegos.

Se lo dices a alguien que ha hecho aplicaciones de consola e IDEs en Bennu (que tiene narices el sincronizar los procesos), y hasta un juego con frontpage sin programar ni una línea :D:D:D
Bueno, y una flauta con la GP2X :lol: Estoy curado de espantos.

Conozco la diferencia entre JRE y JDK, pero no sabía la de JDK y OpenJDK ;)

Drumpi
06/03/2011, 00:30
Bueno, pues ya llevo la mitad del curso que me recomendó Misato, ya casi estoy terminando el apartado de AWT (sí, ya sé, SWING, ya tengo otro tuto por ahí preparado, pero las bases son las mismas), así que estoy pensando en ponerme ya a ir haciendo mis cosas para ir practicando.

Os comento así por encima lo que quiero hacer y luego planteo mis dudas iniciales:
Quiero hacer un editor/compilador de scripts, para la que usaré una lista con distintas clases, cada tipo de clase es para un comando distinto, ya que almacenan distintos números de parámetros.
Dichas clases tienen parámetros en común como es el número de identificación de comando (el que indica si es un "poner_personaje" o "cargar_música"... y por tanto qué clase se está usando) o una StringBuffer que representa el comando y sus parámetros en un hipotético código fuente (digo hipotético porque estoy pensando en generar el fichero binario directamente).

Ahora las dudas:
-Para hacer la lista, lo suyo supongo que sería usar una LinkedList, en lugar de ArrayList, porque admite todo tipo de clases en su interior, no de un sólo tipo (esto me interesaría asegurarme), y añadir/quitar/incrustar nuevos comandos sin comerse mucho la cabeza ¿me equivoco?
-Para hacer las clases ¿debería hacer una clase por cada comando? ¿o debería hacer una super-clase con las variables miembro comunes y que cada comando tenga una sub-clase derivada de esta? ¿ayudaría en algo para la LinkedList?
-Y una última, esta es más estética que otra cosa. Actualmente tengo unos 40 comandos ¿debería crear 40 ficheros, cada uno con su clase? (y meterlos todos en el mismo paquete) ¿o se pueden meter todas las clases en un único fichero (o en grupos según su utilidad)?

^MiSaTo^
06/03/2011, 10:38
Lo leí anoche y ahora lo vuelvo a leer, pero no lo entiendo xD
¿Por qué quieres hacer una lista?
¿Por qué una lista enlazada y no un array normal?
¿Y por qué quieres hacer una clase para cada comando?
:confused:

¿Podrías explicarme qué quieres hacer pero SIN código? ¿O sin ideas de cómo hacerlo en código?

Drumpi
06/03/2011, 14:22
Vale, me explico mejor:

Quiero hacer un editor para Venturer, más completo que ESTE (http://drumpi.se32.com/venturer/ext_utils/venliteed.zip).

Como es un editor de código, lo normal es ir añadiendo comandos uno a uno, en cualquier posición del programa, por eso he pensado que una LinkedList siempre será mejor que un ArrayList, ya que, según he leido, en esta última hay que ir reservando memoria según se necesite, e introducir un elemento en medio es más lento (meter el dato y desplazar todos los que van detrás).

Por otro lado, pensaba hacerlo de forma que el texto sólo fuese una representación visual de lo que hay en memoria, o sea, guardar cada línea en una clase. Pero claro, cada comando es distinto (en ese editor no, pero como tengo intención de ampliarlo y añadir características especiales...) por lo que, para almacenar dicha información, tengo que usar clases distintas.
Puedo hacer que dichas clases deriven de una superclase con algunos atributos comunes, como el texto que se verá en el editor (esto no sé si meterlo con los comandos o hacerlo aparte) o un entero que me diga qué comando es.

Espero haberme explicado mejor ^^U

^MiSaTo^
06/03/2011, 15:10
Vale, me explico mejor:

Quiero hacer un editor para Venturer, más completo que ESTE (http://drumpi.se32.com/venturer/ext_utils/venliteed.zip).

Como es un editor de código, lo normal es ir añadiendo comandos uno a uno, en cualquier posición del programa, por eso he pensado que una LinkedList siempre será mejor que un ArrayList, ya que, según he leido, en esta última hay que ir reservando memoria según se necesite, e introducir un elemento en medio es más lento (meter el dato y desplazar todos los que van detrás).

Por otro lado, pensaba hacerlo de forma que el texto sólo fuese una representación visual de lo que hay en memoria, o sea, guardar cada línea en una clase. Pero claro, cada comando es distinto (en ese editor no, pero como tengo intención de ampliarlo y añadir características especiales...) por lo que, para almacenar dicha información, tengo que usar clases distintas.
Puedo hacer que dichas clases deriven de una superclase con algunos atributos comunes, como el texto que se verá en el editor (esto no sé si meterlo con los comandos o hacerlo aparte) o un entero que me diga qué comando es.

Espero haberme explicado mejor ^^U

No se cómo es el Venturer, porque es para windows [Ahhh]

Así que no, creo que aún no entiendo lo que quieres hacer XDD De todos modos... no crees que es mucho fregao meterte en un editor de scripts/código para aprender java?

Drumpi
06/03/2011, 18:11
Uuups.
Bueno, no pasa nada te metes aqui (http://venturer.esp.st/) o aqui (http://drumpi.se32.com/venturer/) y te enteras :D

Nah, en el primer enlace, si te descargas el compilador viene una relación de los comandos básicos. Además, está programado con Fenix 083b, no sé si esa versión existe en mac.
El caso es que el lenguaje sería una cosa tal que así:


// COLEGIO
//
cargar imagenes 2;
poner borde 1;
poner fondo 5;
velocidad fundido 3;
ejecutar fundido 1 4;
esperar fundido;
escribir texto 9 1;
esperar pulsacion;
escribir texto 10 1;
esperar pulsacion;
borrar texto 1;
ejecutar fundido 2 2;
esperar fundido;
poner fondo 6;
ejecutar fundido 1 2;
esperar fundido;
todos textos 11 12 0;
esperar pulsacion;
poner personaje 10 3;
todos textos 13 0 0;
esperar pulsacion;
todos textos 14 15 16;

Entonces, el editor tendría a un lado botones con todos los comandos disponibles y al otro una TextArea que va mostrando el código tal como va quedando.
Cada vez que se pulsa un botón, se abriría una ventana con los diversos parámetros que se pueden poner (gráfico, nº de linea, música...) según el comando, y al darle a aceptar se añadiría al texto y se crearía un nuevo nodo con estos datos que se añadiría a una lista.

La idea es poder escribir el código lo más rápido y sencillo posible, usando tanto los botones como el texto (aun estoy barajando cómo voy a hacer lo del texto), y una vez que tenga la lista hecha, poder crear el código en un fichero de texto o directamente el fichero binario (compilado) que se le pasará al intérprete para ejecutar el juego.

Hay comandos de 1, de 3 o de 5 parámetros, y no todos significan lo mismo (y es posible que ponga algunos de longitud variable, según cómo se configure cada juego), de ahí que necesite que cada comando sea una clase distinta.


Respecto a si es difícil o no, no creo que sea tan complicado: es crear una interfaz con diversos botones, manejar un fichero de texto y crear ventanas capaces de mostrar algún gráfico (para eso está java2D o la librería OpenGL, creo que también admite directX).
Si no soy capaz de hacer esto, jamás podré hacer un juego en Android. Vamos, digo yo. :lol:

^MiSaTo^
06/03/2011, 18:15
Osea a ver si me he enterado, quieres un intérprete de un código como el que me has puesto. Y que además sea editor de ese código, que en una ventanita puedas escribir o bien el texto o bien pulsando un botón te lo añada no?

Pues sigo sin ver la necesidad de usar una linkedlist y demás parafernalia. Si en el fondo es crear/leer un fichero de texto y actuar según lo que leas no?

Drumpi
06/03/2011, 18:18
PD: mira, una captura del editor que uso ahora. Este es un que me hicieron como un favor y está hecho en VB. Es mucho más simple de lo que tengo pensado, pero para empezar, hacer algo así.

EDIT: no, intérprete no, compilador; de texto a código de bytes. Es hacer un editor/compilador. Pero sí, añadir texto escribiendo o con botones.
La lista es para no tener que leer el fichero de texto y traducirlo a binario, porque ya he tenido muy malas experiencias haciéndolo en Fenix. Aunque estoy pensando que al final lo voy a tener que hacer de todas maneras, por compatibilidad, pero es más sencillo realizar análisis sobre una lista.

^MiSaTo^
06/03/2011, 18:36
PD: mira, una captura del editor que uso ahora. Este es un que me hicieron como un favor y está hecho en VB. Es mucho más simple de lo que tengo pensado, pero para empezar, hacer algo así.

EDIT: no, intérprete no, compilador; de texto a código de bytes. Es hacer un editor/compilador. Pero sí, añadir texto escribiendo o con botones.
La lista es para no tener que leer el fichero de texto y traducirlo a binario, porque ya he tenido muy malas experiencias haciéndolo en Fenix. Aunque estoy pensando que al final lo voy a tener que hacer de todas maneras, por compatibilidad, pero es más sencillo realizar análisis sobre una lista.

Yo te recomiendo que primero te hagas un diagrama de clases y demás para planificarte bien. Tampoco se cómo vas a hacer el compilador así que no se qué más aconsejarte, pero al menos empieza con buen pie xD
El hacer el editor no creo que necesite mucho, simplemente un JFrame, con un JTextArea (creo que se llamaba así) a un lado y botones que te pegan un texto al otro.
Y de ahí recoger el texto y compilarlo con el compilador que crees.

Sigo diciendo que crear un compilador por muy sencillo que sea no es moco de pavo xD No dudo de tu capacidad, pero creo que es complejo para aprender java o X lenguaje.

jduranmaster
06/03/2011, 18:47
PD: mira, una captura del editor que uso ahora. Este es un que me hicieron como un favor y está hecho en VB. Es mucho más simple de lo que tengo pensado, pero para empezar, hacer algo así.

EDIT: no, intérprete no, compilador; de texto a código de bytes. Es hacer un editor/compilador. Pero sí, añadir texto escribiendo o con botones.
La lista es para no tener que leer el fichero de texto y traducirlo a binario, porque ya he tenido muy malas experiencias haciéndolo en Fenix. Aunque estoy pensando que al final lo voy a tener que hacer de todas maneras, por compatibilidad, pero es más sencillo realizar análisis sobre una lista.

para aprender sobre compiladores: "EL LIBRO DEL DRAGON ROJO", es un purazo pero ahi esta todo.

y respecto a la interfaz gráfica, te recomiendo que uses un JFRAME como base, y encima el pongas un JDesktopPane. Este te permite generar nuevas ventanas a modo de editores de texto ya generados por el lenguaje o creados por ti y añadidos al handler del JDesktopPane.

PD: no se que es el venturer, pero vas a hacer un compilador en lenguaje java de otro lenguaje???

^MiSaTo^
06/03/2011, 18:49
PD: no se que es el venturer, pero vas a hacer un compilador en lenguaje java de otro lenguaje???
Para gustos los colores xDDD

Yo no lo haría con java pero oye... y suscribo lo que has dicho del JDesktopPane y demás. Esque ya ni recuerdo cómo iba swing XD

Drumpi
06/03/2011, 19:09
Es que lo que quiero evitar es leer e interpretar el texto, lo que quiero es trabajar directamente con información binaria y una representación en texto de lo que se ha guardado. De nuevo, el texto es secundario, un adorno, una referencia visual.


para aprender sobre compiladores: "EL LIBRO DEL DRAGON ROJO", es un purazo pero ahi esta todo.

Te aseguro que en su día aprendí un montón sobre ellos al hacer Venturer :D:D:D
Teniendo en cuenta que es un lenguaje de 40 comandos, que lo usa un niño de primaria, y que se asemeja un poco al estilo de ensamblador, tampoco me voy a leer un tochaco :D (y más si aun tengo que leerme el manual de referencia completo de SWING, java2D, Android y HTML en los próximos dos meses ^^U).


PD: no se que es el venturer

Hice un concurso, hice página web, le dediqué una semana a ir sacando cosas, las puse en este foro y en el de Bennu, lo porté a GP2X, hice una versión para que no se me quejasen los grafistas...
:llorosa::llorosa::llorosa::llorosa:

Acabo de ver que la demo está caida, así que la he vuelto a subir AQUI (http://drumpi.se32.com/games/DemoVenturer.zip). Eso sí, la hice para la versión 1.0, la 1.3 tiene bastantes cosas nuevas ;)
Sorry, sólo windows (a menos que tengais el FXI 083b de Fenix para vuestra plataforma, sería simplemente añadirlo).


pero vas a hacer un compilador en lenguaje java de otro lenguaje???

Lo gracioso es que lleva hecho ya casi tres años: sí, en Fenix.
Pero ojo, que no genera un binario, genera un fichero de bytecodes para usarlo en un intérprete (que funciona sobre el intérprete de Fenix, eso sí :D).

< - >
Añado dos notas más:
http://www.gp32spain.com/foros/downloads.php?do=file&id=2434
http://www.gp32spain.com/foros/downloads.php?do=file&id=2435

^MiSaTo^
06/03/2011, 19:13
Es que lo que quiero evitar es leer e interpretar el texto, lo que quiero es trabajar directamente con información binaria y una representación en texto de lo que se ha guardado. De nuevo, el texto es secundario, un adorno, una referencia visual.

Por qué esa aversión al texto? XD Al final por lo que he entendido sí tienes un intérprete, pero en vez de texto tienes un binario.



Te aseguro que en su día aprendí un montón sobre ellos al hacer Venturer :D:D:D
Teniendo en cuenta que es un lenguaje de 40 comandos, que lo usa un niño de primaria, y que se asemeja un poco al estilo de ensamblador, tampoco me voy a leer un tochaco :D (y más si aun tengo que leerme el manual de referencia completo de SWING, java2D, Android y HTML en los próximos dos meses ^^U).

Pff Java2D no se para qué lo quieres xD Y bueno HTML... no sabes ya HTML? de todos modos aprender HTML son 5min de na.

En cualquier caso muchas cosas quieres aprender tú en 2 meses xD

jduranmaster
06/03/2011, 19:15
tenias que haber empezado por decir: "es el programa que permite crear aventuras como esta":

http://www.gp32spain.com/archivos/imagenes/pcver_zEj_thumb.jpg


ya lo recuerdo, lo baje en su dia pero nunca llegue a probarlo.

< - >

completo de SWING,¿¿¿¿ java2D???, Android y HTML en los próximos dos meses ^^U)

... y porque no JAVA3D???

^MiSaTo^
06/03/2011, 19:16
... y porque no JAVA3D???
Y por qué no OpenGL si su fin último es hacer juegos para Android ? XD

Drumpi
06/03/2011, 19:23
Aun estoy abierto a sugerencias respecto al tema de gráficos, pero no se si todos los dispositivos disponen de openGL (en mis tiempos, los móviles no tenían una GPU :D).

PD: La imagen de ese juego es de la demo que subí hace cosa de un año y pico (¿o fueron dos?) de un juego que aun tengo que acabar. Está casi toda la aventura hecha, sólo falta la música, los créditos y terminar de readaptarla para GP2X, que no me cabe en 8MB de RAM.
Pero sí, se pueden hacer sencillas novelas gráficas, y esperaba que al hacer este editor pudiese añadirle mapas con mi motor de scroll tileado y combates por turnos, para acercarlo más al ROL/aventura gráfica (y darle algo más de interactividad).

^MiSaTo^
06/03/2011, 19:25
Aun estoy abierto a sugerencias respecto al tema de gráficos, pero no se si todos los dispositivos disponen de openGL (en mis tiempos, los móviles no tenían una GPU :D).

PD: La imagen de ese juego es de la demo que subí hace cosa de un año y pico (¿o fueron dos?) de un juego que aun tengo que acabar. Está casi toda la aventura hecha, sólo falta la música, los créditos y terminar de readaptarla para GP2X, que no me cabe en 8MB de RAM.
Pero sí, se pueden hacer sencillas novelas gráficas, y esperaba que al hacer este editor pudiese añadirle mapas con mi motor de scroll tileado y combates por turnos, para acercarlo más al ROL/aventura gráfica (y darle algo más de interactividad).

Android lleva OpenGL ES de serie. Osea funciona en todos.
Puedes usar OpenGL con 2D usando una vista ortogonal y listo. No necesitas coma flotante, ni GPU ni leches ;)

Segata Sanshiro
06/03/2011, 20:04
Hablando de... ¿qué habéis usado (los que sabéis) para aprender Android? Teniendo en cuenta que ya "sé" Java. He sacado de la biblio un libro titulado "Hello, Android" pero por lo que he leído hasta ahora, funciona casi exclusivamente a base de ejemplos.

Para aprender a programar es imprescindible (o viene muy bien) tener ejemplos, pero se agradecería un poco de visión general de la teoría, en plan, cómo están organizados los recursos, los xml, cómo es más o menos la jerarquía de las clases... y luego ya ir tirando a base de ejemplos y de leer la documentación.

Quizás esté bien la guía oficial (http://developer.android.com/guide/index.html) pero es un tostón leer en el PC para mis ojos :(

jduranmaster
06/03/2011, 20:08
pues yo empece con la guia oficial y luego segui con muchos tutoriales que puedes encontrar a nada que hagas buscquedas con google

^MiSaTo^
06/03/2011, 20:21
Yo también empecé con la guía oficial ;) Lo que pasa que fue cuando salió la versión del SDK 0.9 y era de lo más incompleto del mundo. Supongo que ya no será tan así.

Luego tiré bastante de android-spa para las dudas básicas, y sino tu hamigo google

Segata Sanshiro
06/03/2011, 20:28
Gracias, pues empezaré con la guía oficial entonces, ya veré cómo hago para no j0derme los ojos xD

Drumpi
10/03/2011, 02:43
Como veo que no termino de explicarme, plantearé la pregunta de otra forma:

¿Cuando se debe usar LinkedList y cuando ArrayList? ¿Por qué todo el mundo usa ArrayList?
Y espero que la respuesta no sea "en mi infancia tuve un trauma con los punteros de C y las listas enlazadas" :D:D:D

jduranmaster
10/03/2011, 09:18
Como veo que no termino de explicarme, plantearé la pregunta de otra forma:

¿Cuando se debe usar LinkedList y cuando ArrayList? ¿Por qué todo el mundo usa ArrayList?
Y espero que la respuesta no sea "en mi infancia tuve un trauma con los punteros de C y las listas enlazadas" :D:D:D

pues usarás Linkedlist cuando realmente necesites una lista enlazada, nada mas y nada menos. Basicamente cuando necesites una estructura de datos en la que solo vayas a añadir por el comienzo y por el final y no acepte elementos nulos.


¿Porque todo el mundo usa ArrayList? --> eso no es cierto. Puede que en todos los ejemplos que te hayas encontrado por ahi hagan uso de arraylist pero no significa que sea el mas usado, o el de mejores prestaciones. Lo que si es cierto es que es el mas sencillo de usar, por varios motivos:

- Tiene metodos para preguntar tamaño, indices, tipo de objeto almacenado en tal posición (este utlimo creo que ya no porque ahora los arraylist deben almacenar elementos de la misma clase, antes podias usar un arraylist para almacenar en la primera posicion un objeto complejo y en la segunda un entero por ejemplo, pero daba problemas y cambiaron la implementación) --> esto ultimo es porque ArrayList viene de java.util.Vector.

- Si creas un arraylist de tamaño N cuando superas el umbral la JVM automaticamente lo transforma en una arraylist de tamaño 2N para que no haya desboradmiento, cosa que no pasa con otras estructuras.

- es muy facil de serializar para guardar la estrcutura en un fichero, lo mismo para recuperarlo

todas estas razones hacen que a pesar de no ser la opcion optima en muchos casos sea la mas usada, simplemente por comodidad y sencillez.

Hay otras estructuras muy interesantes como HashTable o HashMap, pero eso ya depende del uso que vayas a dar en tu programa.

SALUDOS.

PD: siempre puedes hacer como en C++ o C, y picarte una FIFO, o una lista a la antigua usanza asi estas seguro de que lo que haces con la memoria es lo que te interesa, porque aqui parece que todo el mundo tiene grabado a fuego que la gestion de memoria en java y el garbage collector lo gestiona la JVM solita y se olvidan del paquete java.lang.Runtime y derivados. (presiamente para controlar el GarbageCollector).

SALUDOS. 2. :D

^MiSaTo^
10/03/2011, 11:21
pues usarás Linkedlist cuando realmente necesites una lista enlazada, nada mas y nada menos. Basicamente cuando necesites una estructura de datos en la que solo vayas a añadir por el comienzo y por el final y no acepte elementos nulos.


¿Porque todo el mundo usa ArrayList? --> eso no es cierto. Puede que en todos los ejemplos que te hayas encontrado por ahi hagan uso de arraylist pero no significa que sea el mas usado, o el de mejores prestaciones. Lo que si es cierto es que es el mas sencillo de usar, por varios motivos:

- Tiene metodos para preguntar tamaño, indices, tipo de objeto almacenado en tal posición (este utlimo creo que ya no porque ahora los arraylist deben almacenar elementos de la misma clase, antes podias usar un arraylist para almacenar en la primera posicion un objeto complejo y en la segunda un entero por ejemplo, pero daba problemas y cambiaron la implementación) --> esto ultimo es porque ArrayList viene de java.util.Vector.

- Si creas un arraylist de tamaño N cuando superas el umbral la JVM automaticamente lo transforma en una arraylist de tamaño 2N para que no haya desboradmiento, cosa que no pasa con otras estructuras.

- es muy facil de serializar para guardar la estrcutura en un fichero, lo mismo para recuperarlo

todas estas razones hacen que a pesar de no ser la opcion optima en muchos casos sea la mas usada, simplemente por comodidad y sencillez.

Hay otras estructuras muy interesantes como HashTable o HashMap, pero eso ya depende del uso que vayas a dar en tu programa.

SALUDOS.

PD: siempre puedes hacer como en C++ o C, y picarte una FIFO, o una lista a la antigua usanza asi estas seguro de que lo que haces con la memoria es lo que te interesa, porque aqui parece que todo el mundo tiene grabado a fuego que la gestion de memoria en java y el garbage collector lo gestiona la JVM solita y se olvidan del paquete java.lang.Runtime y derivados. (presiamente para controlar el GarbageCollector).

SALUDOS. 2. :D

Qué bien explicado :brindis: venía a decir precisamente LinkedList cuando necesites lista enlazada XDD Pero tú lo has explicado muchísimo mejor.

Sólo una cosa, el java.lang.Runtime y tal si no tienes mucha idea, mejor no tocarlos y dejar que la JVM gestione la memoria (que ya lo hace bien).

Drumpi
11/03/2011, 00:26
Teniendo en cuenta que voy a estar metiendo datos constantemente, y que estos, aunque por lo general van a ir al final (aunque no descarto que en un determinado momento se metan los datos a la mitad de la lista), la LinkedList es la mejor opción. Además, he leido más recomendaciones y en todas coinciden: las ArrayList son muy lentas si metes datos en medio o si tiene que ampliar la memoria (y eso de ampliar a 2n, pues como que se puede ir de madre).

Pero el caso es que he preguntado en este foro y he preguntado por otro lado, y aunque he dicho "pienso que el LinkedList es lo que necesito", en las respuestas siempre me habeis mencionado la ArrayList.

También he leido por ahí que este tipo de almacenamiento de memoria ha dejado de implementar colecciones de Object, y que ahora sólo admitían una clase, pero me tengo que informar mejor.
Como he dicho, en dicha lista van a ir como unas 40 clases distintas, aunque puedo hacer que todas deriven de una única superclase, no sé si eso ayudaría o no.

Hasta ahora, en Java he programado dichas listas "a la antigua usanza", pero no sé de qué tipo especificar el puntero a la siguiente clase, si esta es una de esas 40 posibles que menciono antes (a menos que pueda declarar puntero a Object o a la superclase que tendrían en común).

jduranmaster
11/03/2011, 09:14
Teniendo en cuenta que voy a estar metiendo datos constantemente, y que estos, aunque por lo general van a ir al final (aunque no descarto que en un determinado momento se metan los datos a la mitad de la lista), la LinkedList es la mejor opción. Además, he leido más recomendaciones y en todas coinciden: las ArrayList son muy lentas si metes datos en medio o si tiene que ampliar la memoria (y eso de ampliar a 2n, pues como que se puede ir de madre).



no, no se va de madre, funciona siempre y tu ni te entereas.



Pero el caso es que he preguntado en este foro y he preguntado por otro lado, y aunque he dicho "pienso que el LinkedList es lo que necesito", en las respuestas siempre me habeis mencionado la ArrayList.


hombre te menciono el ArrayList porque es por lo que has preguntado, revisa tu pregunta. :D



También he leido por ahí que este tipo de almacenamiento de memoria ha dejado de implementar colecciones de Object, y que ahora sólo admitían una clase, pero me tengo que informar mejor.
Como he dicho, en dicha lista van a ir como unas 40 clases distintas, aunque puedo hacer que todas deriven de una única superclase, no sé si eso ayudaría o no.


java.util.ArrayList <java.lang.Object> listaDrumpi = new java.util.ArrayList <java.lang.Object>();

esta es una forma de declarar un arraylist de object, con linkedlist es igual pero sustituyendo por la clase adecuada. Prueba a ver si te funiona de las dos formas.

sino te deja y dado que en la lista vas a tener "40clases distintas" te puedes hacer un linkedlist de arralist, puede sonar un poco rebuscado, pero funciona.

y finalmente te vuelvo a recomendar que te mires HashMap y similares.



Hasta ahora, en Java he programado dichas listas "a la antigua usanza", pero no sé de qué tipo especificar el puntero a la siguiente clase, si esta es una de esas 40 posibles que menciono antes (a menos que pueda declarar puntero a Object o a la superclase que tendrían en común).

puedes hacerlo en java desde cero, pero no tiene sentido teniendo las colecciones, porque para eso están para facilitar la vida.

saludos.

^MiSaTo^
11/03/2011, 09:56
¿Por qué no te iba a dejar hacer un ArrayList de Object?Si todo hereda de object, es lo más genérico que hay ;)

Sólo dos cosas:

1) Dónde ves tú que necesitas una lista enlazada?
2) 40 clases diferentes ? O_O o algo estás haciendo mal o ya es el acojo-programa...

Drumpi
11/03/2011, 20:10
no, no se va de madre, funciona siempre y tu ni te entereas.

Es que si se va multiplicando por dos, vale, al principio la cosa va más o menos bien (2k, 4k, 8k, 16k...) pero a poco que empices con valores altos, el consumo se dispararía (exagerando un poco: 16M, 32M, 64M, 128M, 256M...).



java.util.ArrayList <java.lang.Object> listaDrumpi = new java.util.ArrayList <java.lang.Object>();

esta es una forma de declarar un arraylist de object, con linkedlist es igual pero sustituyendo por la clase adecuada. Prueba a ver si te funiona de las dos formas.
(...)

y finalmente te vuelvo a recomendar que te mires HashMap y similares.

Un poco rara la forma de declarar Object para la lista (creía que Object ya estaba pre-incluida en java), comparado con lo que estoy acostumbrado ^^U Casi mejor hacer lo que decía, tener la clase Comando y que las demás hereden de ella.
O es que lo he entendido mal, porque creía que, habiendo importado las librerías, se podía hacer algo tal que así (más o menos):
ArrayList Object listaDrumpi= new ArrayList Object();

Y sí, he mirado lo de HashMap, Treemap, etc, y las que me sirven son arrayList y LinkedList, que no son ordenadas, que mantienen una sola línea (no como el árbol) y admiten todo tipo de datos simples.



¿Por qué no te iba a dejar hacer un ArrayList de Object?Si todo hereda de object, es lo más genérico que hay ;)

Sólo dos cosas:

1) Dónde ves tú que necesitas una lista enlazada?
2) 40 clases diferentes ? O_O o algo estás haciendo mal o ya es el acojo-programa...

Entonces ¿cómo crearías tu un editor de, por ejemplo, lenguaje ensamblador, de forma que no tengas que escribir los comandos a mano? Te recuerdo que existen comandos de uno, dos y más parámetros, y que admiten tipos tan dispares como valores, referencias, direcciones de memoria, direcciones con post-incremento, pre-decremento...
En mi caso, es un número indeterminado de parámetros :lol:

jduranmaster
11/03/2011, 20:19
Es que si se va multiplicando por dos, vale, al principio la cosa va más o menos bien (2k, 4k, 8k, 16k...) pero a poco que empices con valores altos, el consumo se dispararía (exagerando un poco: 16M, 32M, 64M, 128M, 256M...).


hombre si me dices que tus objetos ocupan 1 Gbyte.... :D



Un poco rara la forma de declarar Object para la lista (creía que Object ya estaba pre-incluida en java), comparado con lo que estoy acostumbrado ^^U Casi mejor hacer lo que decía, tener la clase Comando y que las demás hereden de ella.
O es que lo he entendido mal, porque creía que, habiendo importado las librerías, se podía hacer algo tal que así (más o menos):
ArrayList Object listaDrumpi= new ArrayList Object();


no es una forma rara, es la forma oficial y adecuada de crear un arraylist o linked list de object, que no te gusta el java.lang.Object, pues no lo pongas pero en mis programas yo siempre pongo la ruta completa de los paquetes a los cuales pertenecen los objetos. No esta de mas acerlo asi cuando tus programas tienen varios paquetes y pueden existir Objects de distinto paquete. Cuestion de gustos.

Drumpi
05/04/2011, 18:10
Hace tiempo que se me ocurrió esto, pero por h o por b siempre se me olvida comentarlo ^^U

Se me ocurrió que podía convertir todas las clases "comando" en una sola, usando una matriz irregular: usar el primer índice para almacenar los diversos parámetros que tiene (dado que se puede poner que tenga cualquier tamaño, puede servir para poner un parámetro, tres o cinco sin problemas), y el segundo si alguno de estos requiere de más de un valor (por ejemplo, en el campo de gráficos, para indicar una animación). No sé si me explico.

¿Sería una buena idea o una aberración como un templo? :D

swapd0
05/04/2011, 20:37
El problema de eso es, ¿que pasa si escribes mal la tabla y le pasas a una clase o funcion mas o menos parametros? La ventaja es que ahora el compilador te detecta eso.