style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

% IDE's para JAVA 2

YO APRENDÍ JAVA EN SÍMBOLO DE SISTEMA DE WINDOWS Y EN LA TERMINAL DE LINUX
DESPUÉS ME METÍ A NETBEANS Y ME GUSTO, TUVE UN ENCUENTRO CON ECLIPSE PERO NO ME GUSTO.

RESPETO PUNTOS DE VISTAS DISTINTOS HAY GENTE QUE LE GUSTA PERO PS LIBERTAD DE EXPRESIÓN.

-------------------NETBEANS, ECLIPSE, JEdit, JGrasp, IntelliJ, STS

YO DIGO : 40%, 30%, 10%, 10%, 5%, 5% .

USTEDES A CUAL LE VAN

Comentarios

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.

Recomendación.

Leyendo tus posts, te dejo cómo crítica constructiva o recomendación: Porfavor has tus posts más descriptivos. Muchas veces (y muchos usuarios seguro) no entiendo que quieres decir con tus posts.

de 0 a 10 mis calificaciones

de 0 a 10 mis calificaciones son (NETBEANS, ECLIPSE Galileo, JEdit, JGrasp, IntelliJ, STS):
9, 7, 5, n/a, 8, 8

nadie tiene 10... NADIEEE!!!

Imagen de luxspes

Coincido, a mejor redacción, mas valor en tus aportes

Leyendo tus posts, te dejo cómo crítica constructiva o recomendación: Porfavor has tus posts más descriptivos. Muchas veces (y muchos usuarios seguro) no entiendo que quieres decir con tus posts.

Coincido en la recomendación de wishmaster: Jose Gastelum te recomiendo esta guia, en verdad creo que es muy probable que haya mucho conocimiento interesante dentro de ti que podrías compartir, solo te falta aprender a expresarte con mas claridad

Imagen de luxspes

Por mi parte de 0 a 10 mis calificaciones son

Por mi parte de 0 a 10 mis calificaciones son:

  • Eclipse Helios: 6 en web, 5 en Swing (eclipse es mas que nada un conglomerado de plugins)
  • Netbeans: 5 en web, 9 en Swing (Netbeans es para mi mas un IDE que Eclipse, pero sin WYSWYG para web, su utilidad es muy limitada
  • JEdit: 4 en web, 4 en Swing (es poco mas que un notepad con esteroides en mi opinon)
  • IntelliJ: 8 en web, 8 en Swing, (Es agradable de utilizar, aunque lo he usado muy poco, al final de todas maneras se queda corto por su falta de designer web
  • JDeveloper: 7 en web, 7 en Swing, (Este si tiene designer para web y para swing, desafortunadamente esta demasiado amarrado a extensiones propietarias de Oracle)

Pero creo que es dificil con tan poco texto expresar las diferencias... al final, comparados con productos como Delphi o Visual Studio o XCode + InterfaceBuilder, o ProjectBuilder + WebBuilder + InterfaceBuilder (alla en los tiempos de gloria de WebObjects) que si te todas las facilidades de programacion visual en muchos sentidos se quedan cortos:

Como es posible que no haya nada ningun IDE para Java que te de algo como Dreamweaver o Expression Web?

Re: Por mi parte de 0 a 10 mis calificaciones son

mmm, yo creo que XCode + Inteface Builder no está a la altura de VS. Creo que la verdad Visual Studio tiene eso integración chidota con todos sus servicios (véase MS SQL Server, frameworks varios de MS, el servicio de creación visual de interfaz, tanto web cómo de escritorio tanto de Windows Mobile o Windows Phone).

La verdad ahorita que estoy con aprendiendo desarrollo iPhone se me hace pesado el estar en XCode y luego brincar a Interface Builder y luego volver a XCode...Mientras en Visual Studio basta con un Control + TAB. Incluso en Android con Intellij IDEA puedes usar Drag 'n Drop. Pero gracias a Titanium tenemos alternativas. ;)

Imagen de beto.bateria

Al principio empece con

Al principio empece con netbeans, despues trate con eclipse, pero fue un poco frustrante, en el transcurso del tiempo intente varias veces eclipse, ahorita es lo que manejo y estoy feliz.

Imagen de ezamudio

Interface Builder

Si crees que Visual Studio es superior a XCode + IB es porque no sabes cómo funciona IB. Visual Studio es un IDE monolítico, tipo Eclipse por ejemplo, y el editor visual para interfaces Windows es muy bueno para poder acomodar las cosas donde van, el botoncito, el campo de texto, el DataGrid, etc. Pero ahí es donde termina lo bonito, al menos para mí que conozco IB y VS.NET. El editor de VS no es más que un generador de código, y además la manera de manejar eventos, es decir, el código que se va a invocar cuando el usuario oprima un botón, me parece realmente algo tosco y arcaico, no sólo el diseño de winforms, sino la manera en que se hace esa conexión en VS.

Interface Builder por otra parte, no es un generador de código. Cuando creas una venta y le pones botones y campos de texto y cosas así, estás manejando objetos vivos, es decir, ya es tal cual un objeto que se serializa y se guarda en un archivo, no son 10 líneas de código ocultas en alguna clase por ahí. Por eso en IB puedes conectar objetos entre ellos y probar la interfaz y ver cómo interactuan en ese momento. Por eso puedes hacer tus bibliotecas de componentes visuales y utilizarlas desde IB igual que usas los componentes nativos. En tiempo de ejecución, el archivito de IB trae serializados los objetos que contiene la interfaz gráfica, y para cargarla lo único que se hace es deserializar los objetos almacenados en ese archivo y conectarlos como se indica ahí mismo (las conexiones mismas son objetos que se serializan también en el archivo y que al deserializarse, conectan sus puntos terminales y se quitan del camino). Todo eso es posible gracias a la manera en que funciona Objective-C, en gran parte gracias al tipado dinámico.

Durante un buen tiempo estuve pensando en la manera de poder hacer algo similar para Java, pero es bastante complicado. Pero ahora con Groovy tal vez sería posible, a lo mejor luego hacer algo como IB para Griffon o para Groovy solito con SwingBuilder...

Re: Interface Builder

De la misma manera que puedes usar objetos vivos y eso no sólo en .NET, sino también en Java ¿O a qué te refieres con objetos vivos?. A lo que voy es que quizás tenga mucha calidad XCode + Interface Builder, pero siendo honestos en productividad los IDEs monolíticos aplastan a XCode + Interface Builder; o al menos así me sentí en al hacer el "hola mundo" en iPhone, fue algo lentísimo para una etiqueta que en Visual Studio arrastras le modificas la propiedad texto y ya (igual en Android con IntelliJ IDEA).

Imagen de ezamudio

Objetos vivos

Los editores visuales de NetBeans para Swing, o de .NET para Winforms, solamente generan código. Te muestran cómo se va a ver la ventana con los botones y demás, pero solamente es como una foto de la GUI, no es la GUI real. Para que esa GUI funcione, necesitas echar a andar toda tu aplicación.

Para iPhone tal vez no aplique, no sé... pero para Cocoa me consta que sí: Cuando en Interface Builder creas una ventana, y le pones botones y campos de texto y cosas así, no se está generando código. No voy a repetir todo lo del funcionamiento de IB porque ya lo escribí en el comentario previo. El botón que pones en la ventana, no hace que se genere código para crear un botón similar; ese botón que ves ahí, se guarda en el archivo .nib y es el que se va a deserializar al leer ese archivo. Pero por lo mismo de que ya es un botón, puedes probar la interfaz sin tener que correr ninguna aplicación. Para qué sirve eso? Pues para ver cómo se comportan los componentes visuales a la hora de cambiar el tamaño de la ventana, y de hecho para probar todo el comportamiento de los componentes visuales, e incluso de controladores no visuales que se puedan manejar directo en IB. Al darle "test interface" puedes por ejemplo dar click en un botón y si ese botón está conectado a una ventana para abrirla, se abrirá. A eso me refiero con objetos vivos. Creo que ya no puedo ser más claro, he buscado los videos viejos de demos de IB en youtube pero obvio ahorita todo lo que encuentro es de iPhone.

Re: Objetos vivos

Ok Ok, I caught it!

Y pues de hecho, yo no puedo opinar tampoco del lado de Cocoa, porqué de verdad que no lo he utilizado, ya que desde el iPhone la gente volvió a tomar interés en Objective C + XCode + Interface Builder; pero sólo en la parte de iPhone. Y de verdad que es elegante el XCode en donde tecleas algo y no te sale tremendo listononon con miles de opciones a elegir, sino las más reelevantes; pero volvemos, quizás sea mucha calidad y te brinde algunas ventajas...Pero al menos en el apartado móvil (o sea iPhone) se me hizo pesado y tedioso para un simple "Hola mundo", lo que en .NET Compact Framework y Android basta con arrastrar la etiqueta y cambiar la propiedad de texto. No discuto la calidad de las herramientas de desarrollo de Apple, simplemente que en cuanto a productividad no son lo mejor.

Imagen de ezamudio

el engañoso hola mundo

Creo que hoy día hay muchas tecnologías en las que un "hola mundo" simplemente no viene al caso como demo o intro. Sigue siendo (y debe seguir siendo) la norma para presentar cosas simples de un lenguaje de programación, por ejemplo, pero fuera de ciertos ejemplos, hay muchas veces en donde simplemente no es demostrativo del poder de una plataforma.

Por ejemplo, si ves un "hola mundo" de JEE, no te quedan ganas de hacer nunca nada en esa plataforma. Decenas de líneas de XML, docenas de acrónimos, no sé cuántas bibliotecas, todo para presentar una paginita que diga "hola mundo", pero que el texto viene de un EJB que a su vez lo sacó por JPA de una base de datos, etc...

Yo uso Android, porque no me gusta que el fabricante de mi teléfono la quiera hacer de mi niñera y me diga qué cosas le puedo instalar a MI aparato, etc. Pero el SDK de iPhone es excelente. Tal vez para llegar a un simple "hola mundo" es un relajo, pero no es demostrativo del poder de la plataforma.

Re: el engañoso hola mundo

Desgraciadamente te digo, en mi caso fue sólo mostrar una etiqueta cambiando el texto de la etiqueta por "hola mundo"...Con Android igual tampoco es la gloria definir la interfaz con XML, aunque cómo dije para iPhone y Android prefiero Titanium.

Imagen de bferro

El infame "Hola Mundo"

Usar "Hola Mundo" para comenzar a enseñar un lenguaje procedural (C como lenguaje típico de esa familia) tiene sentido porque con ese programa sencillo puedes explicar varias cosas importantes de ese paradigma: el uso de variables, la creación de funciones, el paso de argumentos a funciones, el uso de apuntadores, el uso de arreglos, la existencia de bibliotecas de funciones y el uso en un programa tuyo de una de esas funciones.

La inercia y el reconocimiento al "Hola Mundo" provocan que muchos libros y cursos de programación orientada a objetos, lo sigan usando para comenzar con POO, lo que en mi humilde opinión es un error y conduce a malos hábitos, si ellos no se corrigen rápidamente.

Como sucede con nuestros hábitos de conducta; si no los aprendemos en la primera infancia, cuesta después mucho trabajo aprenderlos.

En mis cursos de programación orientada a objetos con Java, nunca comienzo con el programa canónico "Hola Mundo" que todo el mundo conoce que aquí escribo:

class Main {
     static void main(String[] args) {
        System.out.println("Hola Mundo");
     }
}

¿Por qué este programa no sirve para introducir casi nada de la programación orientada a objetos?

  • Porque no puedo hablar del concepto de clase usando Main. Ese ejemplo solamente sirve para decir que todo código tiene que estar contenido en la construcción class. No explica nada del concepto de clase
  • Porque no ilustra la creación de objetos
  • Porque no puedo explicar que el método de computación en POO es aplicar métodos sobre objetos
  • Porque main(...) no es funcionalidad de ningún objeto en el ejemplo
  • Porque no puedo hablar de atributos y comportamientos de los objetos
  • Porque la expresión System.out.println( ...) es complicada para quien se inicia en la programación orientada a objetos.
  • Otros desastres más

Los malos hábitos se deben desechar. En especial este hábito

Pues en mi caso mi primer

Pues en mi caso mi primer programa en Java si fue el "hola mundo" y aunque hoy e dia no me haba pueso a pensar e lo util/inutil que seria empezar por ese programa puedo decirte que si bien puede ayudarte bastante cuando tienes tu primer acercamiento con Java... es decir: a verificar que tu instalacion esté Ok, que comprendas cuando necesitas nombrar el archivo Java tal como se llama la clase (public) que aprendas el uso de Javac y de Java, que aprendas como es la salida del bytecode de Java que al ejecutar "java Clase a b c" puedas ver como es que recibe los argumentos y que desde ese principio te equivoques en estos aspectos para ahora si ya entres a la profundidad del lenguaje

Se que no es bueno hablar mal de las personas pero en mi caso tuve unos profesores muy maletas y nomas me dijeron que "public static void main" es public: por publico; static: por estatico; main: porque es "la clase principal"... :S

Ah, jijos, para aprender Java solo hay que aprenedr ingles y ya estuvo (pense) y desde ese momento aprendi por mi cuenta porque todo mundo hablaba de Objetos y mas Objetos y que POO y que OOP y que instancias y que atributos y todas esas cosas que yo no sabia... en mi caso si tuve una instruccion academica basada en "Entrada - Proceso - Salida" pero TODO sobre el main...

Moraleja: No dudo que hacer el "Hello world" sirva para introducirse (en este caso a Java) pero es muy acertado lo qe menciona bferro pues tambien conozco (malos habitos) que todo codigo lo ponen en el Main

Los codigos que generabamos eran de este tipo (solo para ejemplificar lo de entrada - proceso - salida)....

        static String texto;
       
        public static void main(String[] args) {
                entrada();
                proceso();
                salida();
        }
       
       
        public static void entrada(){
                texto = Leer.dato();
        }
       
       
        public static void proceso(){
                texto = texto.toUpperCase();
        }
       
       
        public static void salida(){
                System.out.println(texto);
        }

por cierto despues con los compañeros haciamos chistes y deciamos que ibamos a hacere "Hello World!" Orientado a Objetos

 

 

Esto del "Hello World!" Orientado a Objetos quedaria (version yo):

 

 

Message.java

public class Message {
        String text;
       
       
        public Message(String text) {
                this.text = text;
        }
       
       
        public String getText() {
                return text;
        }
       
       
        public void setText(String text) {
                this.text = text;
        }
       
       
       
}

 

 

HelloWorld.java

public class HelloWorld {
       
       
        private Message message;
       
       
        public HelloWorld(Message message) {
                this.message = message;
        }
       
       
        public HelloWorld() { }
       
       
        public void printMessage(){
                System.out.println(message.getText());
        }
       
       
        public Message getMessage() {
                return message;
        }
       
       
        public void setMessage(Message message) {
                this.message = message;
        }
       
       
}

 

 

 

Para usar eso:

        public static void main(String[] args) {
                HelloWorld sayHello = new HelloWorld(new Message("Hello World!"));
                sayHello.printMessage();
        }

 

o tambien usar

        public static void main(String[] args) {
                HelloWorld sayHello = new HelloWorld();
                Message message = new Message("Hello World!");
                sayHello.setMessage(message);
                sayHello.printMessage();
        }

(Como quieras)

 

 

Con esto podria tener una nueva conclusion: Depende como hagas el "Hello World! porque asi como lo hay para Java en una terminal, tambien lo hay para un servlet, para una App de telefono, para probar tus Ejotes (ejb, iniciando con persistencia de datos), para Spring (iniciando por ejemplo tu inyecion de dependencias), con .... uuuuuts, con todo podemos hacer "Hello World!" Dependemucho del enfoque que tengamos al hacerlo

Imagen de ezamudio

engañoso

Yo por eso digo que es engañoso el hello world. Con todo se puede hacer, pero no necesariamente es útil. La idea es que sea el programa más sencillo en la plataforma o tecnología o lenguaje que estás aprendiendo, pero cuando dicha plataforma o tecnología es lo suficientemente compleja, un hello world simplemente no viene al caso, al menos no como demo de dicha plataforma/tecnología, solamente como pruebita de concepto chafa para enseñar cómo se hace algo.

Por ejemplo, una demo con Hello World para web casi siempre va a fallar, porque siempre será más rápido teclear simplemente <html><head><title>Hello World</title></head><body>Hello, World!</body></html> y guardarlo en index.htm y ponerlo en la raiz de un web server, que hacerlo con jsp, JSF, Grails, Wicket, RatPack, Tapestry, RoR, Play!, Roo, etc.

Ahora, suponiendo que es para demostrar cómo se hace algo en la plataforma: Tal vez hacer un Hello World en jsp puro es más sencillo que con Tapestry. Por lo tanto nos podemos llevar la falsa impresión de que en jsp se desarrolla más rápido que con Tapestry y que nuestra productividad será mejor usando puro jsp.

Los frameworks y plataformas complejas fueron hechas para resolver problemas complejos. Las demos y pruebas de concepto deberían ilustrar la manera de resolver uno de esos problemas, no hacer un ejemplo de mostrar un mensaje de texto que muchas veces no enseña ni demuestra nada. La verdad es que últimamente, entre más compleja es una plataforma, más inútil es el ejemplo tipo Hello World.

es verdad por ejemplo que en

es verdad por ejemplo que en algunas cosas no aplica un "Hello World!" (como en el ejemplo de Gradle de @ezamudio en donde ya nos lo presenta con algo mas real) pero pienso: Donde se pueda solo es cuestion de manejarlo adecuadamente porque decir "Hello World!" es como un sinonimo de "primeros pasos" como en el ejemplo que publique pudo haber sido util parami antes cuando no sabia que era un objeto (y no deja de ser un hello world) asi como cuando empiezas con WS, DB, sockets... etc

Lo que mas interesa que la forma de implementarlo esté OK, desues ya viene lo complejo pero ya sabes el por que? y el por donde?

Pero el Hola Mundo tiene un valor importante al inicio.

Es una muy buena form de mostrar al menos "como se ve" la cosa ( lenguaje, biblioteca, framework , etc. ) sin tener que leerse un manual que dice y describe todos los features que tiene esa cosa, pero nomás no te puedes hacer una idea de como será.

Por ejemplo las primeras veces que quise saber que era maven entre a http://maven.apache.org/ ( hace casi 10 años) pero por todos lados venian cosas de "el modelo del proyecto" y blablabal pero por ningún lado un maldito pom.xml. Ya sé que Maven no es el pom.xml, pero al menos es la "interfaz" con maven. Ahora ya han modificado todo ese choro y por ahí se pueden encontrar una muestra.

Otro ejemplo son las tecnologias de los vendors ( lease Oracle, IBM, etc ) donde el producto hace TOOOODO ( nomás le falta poner que cambia pañales y esteriliza biberones ) Por ejemplo esta doc. Pero no es posible darse una idea de como es la herramienta.

Es bieeeen cierto lo que mencionan, no debe de tomarse como única referencia de la cosa a enseñar, y es muy límitado al momento de mostrar todos las características ( como bien dice @Bferro ) , pero yo creo que es extremadamente valioso mostrar "de que se trata" la cosa, como "se ve" la cosa, para que al menos se pueda tener una idea mental de lo que vamos a usar para trabajar.

Por ejemplo, recientemente ayude a alguien con un mini-sitio con JSP/Servlets y me sorprendió como algunas cosas resultaban tan confusas ( como request.getParameter vs. object.metodo( parametro ) ) pero pensandolo bien, es muy comprensible; cuando no sabes nada, pues todo es confuso y a veces se nos olvida lo difícil que es empezar con algo.

Por ejemplo, pensando en lenguajes de programación que son quizá poco usados pongamos:

Haskell

main = putStrLn "Hello, world"

Main es una funcion definida como la invocación de la funcion putStrLn que recibe como argumento el string "Hello, world!"

Io

"Hello, world!" println

"Hello, world" es un objeto al que se le invoca el método println

Brainfuck

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
>++++++++[<++++>-] <.>+++++++++++[<++++++++>-]<-.--------.+++
.------.--------.[-]>++++++++[<++++>- ]<+.[-]++++++++++.

Ehh.. .Se toma un apuntador y lo recorre las veces necesarias para encontrar la letra necesaria y luego imprimirla.

Bueeeno , el chiste es que estos ejemplos dan un valor inicial ( en los ejemplos: funciones, objetos y aputadores ), pero efectivamente, si se quieren usar como una "guía de programación" pues quedará muy corto.

Les dejo este link para que curioseen sobre estos y otros ejemplos: http://rosettacode.org/wiki/Hello_world/Text

P.D. Sobre la pregunta inicial, yo uso vi y el compilador cuando se trata de programas pequeños ( < 2 hrs ) para programar grandes definitivamente Intellj IDEA ...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">