cerrar-sesion editar-perfil marker video calendario monitor periodico fax rss twitter facebook google-plus linkedin alarma circulo-derecha abajo derecha izquierda mover-vertical candado usuario email lupa exito mapa email2 telefono etiqueta

3002008070502. Entrevista Abraham Otero

Escrito por Redacción en Entrevista
no hay comentarios Haz tu comentario
Imagen de logotipo de facebook Imagen de logotipo de Twitter Imagen de Logotipo de Google+ Imagen de logotipo de Linkedin

A la hora de elegir la creaciA?n de programas, A?quA� se elige primero el lenguaje o el entorno de desarrollo? A?QuA� factores incluyen?

Pues depende. Si puedes, eliges primero el lenguaje. Desde un punto de vista de la eficacia es mejor el empleo de lenguaje ensamblador, el de la CPU directamente, o C, dado que aportan el mejor rendimiento. Pero tambiA�n son los mA?s complejos y laboriosos para desarrollar aplicaciones. Cuando se trata de enseA�ar en la universidad son tan bien los mA?s adecuados ya que enseA�an cA?mo funcionan las cosas a bajo nivel. AsA�, por ejemplo yo doy clases de programaciA?n de primer curso sobre C en el primer cuatrimestre y de C++ en el segundo.

Si se busca una iniciaciA?n que no tenga tantos requisitos o no necesite tanto rigor porque no va a ser un profesional, pues entonces es preferible un lenguaje interpretado, Python, por ejemplo. La ventaja de un intA�rprete es que escribes a�?3 + 2a�? y rA?pidamente observas la respuesta, de forma que rA?pidamente se obtenga un feedback de lo que estA? haciendo.

Por el contrario, con Java tienes que comenzar a definir toda una serie de estructuras, variables pA?blicas, en definitiva, toda una carcasa inicial para que luego puedas escribir las instrucciones. Esto significa que tienes que poner varias lA�neas de cA?digo simplemente antes de comenzar a escribir realmente el programa que quieres. Cada vez que explicas esto a un nuevo programador, hay que hacerle creer que realmente se necesita todo eso para comenzar a insertar la lA�nea de programa propio.


Desde luego, siempre que sea posible es preferible elegir lenguaje. Si tuviera que aconsejar a nuevos programadores, sobre todo en un entorno acadA�mico, dirA�a que inicialmente es preferible usar un lenguaje interpretado. Pero pensando en un nivel profesional, dentro de una empresa, sin duda hay que ver que entorno de desarrollo se necesita y con ello eliges luego el lenguaje asociado. Desde luego yo soy de los que creen que hay que emplear un completo entorno de desarrollo, ya que realmente ayuda a crear y progresar. Es difA�cil imaginar a un programador profesional creando una aplicaciA?n simplemente desde la lA�nea de comandos. Aunque esto no quita que un buen programador debe aprender a usar la lA�nea de comandos y saber quA� es lo que ocurre por debajo. Pero no creo que esa sea la mejor forma de empezar.

A?CA?mo fue este proceso inicial de elecciA?n en tu caso personal?

En mi caso empecA� con Java, que me fue impuesto para realizar doctorado, ya que indicaron que tenA�a que hacer un desarrollo en Java. AsA� que lejos de otras consideraciones, mi primera elecciA?n de lenguaje me fue ajena y me tuve que acomodar a ella. Algo que no es inhabitual en el mundo de la programaciA?n.

Luego, una vez iniciado con ese lenguaje pues me gustA? y fui perfeccionando sin abandonarlo. He programador cosas que tenA�a que hacer por el doctorado o por la universidad, y otras que no estaban relacionadas en absoluto, simplemente porque me gustaban. Aunque tambiA�n he aprendido y manejado algunos otros. Pero siempre haya un lenguaje o un entorno de desarrollo con el adquieres mayor experiencia o te sientes mA?s cA?modo.

Desde tu conocimiento A?CuA?les son los principales entornos de trabajo y herramientas de desarrollo para Java?

Si estamos hablando de aprender a programar, ademA?s se trata de alguien que no sabe lo que es la programaciA?n orientada a objetos, yo el entorno de desarrollo con el que me quedarA�a, es uno que se llama BlueJ (http://www.bluej.org/).


Es un entorno de desarrollo inicialmente creado desde un entorno acadA�mico, si mal no recuerdo por una universidad australiana y otra inglesa. Tal vez por ello es un entorno muy orientado a la docencia, hace una representaciA?n del programa muy bA?sica, donde se ven las cajas on sus mA�todos, y permite, por ejemplo, ver la herencia, la asociaciA?n, y tiene lo que me gusta de Python, que es un se puede hacer clic derecho en las cajitas e invocar a un constructor, y luego m aparece una pelotita que es su objeto y luego en ese objeto puede hacer clic derecho y llamar a cualquiera de los mA�todos.

Es decir, recupera un tanto la idea del intA�rprete, de jugar directamente con el cA?digo. Todo esto es estupendo inicialmente, pero se trata de una herramienta un tanto limitada y bA?sica, con lo que tras lograr una cierta soltura y conocimiento pronto hay que pasar a otro entorno, sobre todo para hacer programas a�?de verdada�?.

Y pasando a un entorno mA?s profesional, orientado a desarrollo de aplicaciones incluso comerciales, A?CuA?les son tus sugerencias?

Bueno, lo primero que debo indicar es que no pertenezco a ninguna empresa ni estoy ligado comercialmente a ninguna, asA� que se trata de mi opiniA?n personal e independiente. Dicho esto, en cuanto se piensa en desarrollar programas de tipo profesional mi recomendaciA?n es el entorno NetBeans (http://www.netbeans.org/). Dentro de los IDEs de tipo gratuito, hay dos grandes elecciones: Eclipse y NetBeans. En cuento a Eclipse, su punto fuerte, que es a la vez su punto dA�bil, son los plugins.


Otra alternativa, si ya conoces bastante del tema, es que, en lugar de bajarte Eclipse (http://www.eclipse.org/), acudes a una distribuciA?n de las que tienen ya incluido los complementos deseados, pero en caso contrario te encuentras con que Eclipse es un entorno bA?sico y generalmente se necesitan ciertas ampliaciones o plugins. Por su parte, Eclipse no es tan completo como NetBeans, ya que, por ejemplo no puedes desarrollar aplicaciones Web.

Una de las polA�ticas que ha tenido NetBeans, y que tiene sus ventajas y sus inconvenientes, aunque mA?s de las primeras, es que se trata de un paquete A?nico. Y desde luego esto es una ventaja tanto para aprender como para iniciarse rA?pidamente en la programaciA?n. AsA� que cuando bajas e instalas el paquete tienes todo, desde Java Bases de datos, hasta un servidor Web, un servidor de aplicaciones, herramientas para trabajar con UML, con lo que en media docena de clics y sin tocar el teclado puedes tener una pA?gina JSP en tu equipo y verla desde el navegador. Esto con Eclipse no es ni tan rA?pido ni tan sencillo.

A?Hay otras alternativas interesantes? A?CA?mo se elige uno u otro?

Pues creo que los mA?s importantes, los mA?s empleados y los que mA?s interesantes, son tres: NetBeans, Eclipse e IntelliJ. Los dos primeros son gratuitos y el tercero es bastante barato. IntelliJ (http://www.jetbrains.com/idea/), que es una excelente herramienta, cuesta uno 150 $ para uso personal y unos 400 o 500 $ para empresa. Aunque, en fin, es un tanto discutible si compensa pagar por tener un entorno de desarrollo para Java, teniendo alternativas gratuitas.

((Al ser IntelliJ un producto desarrollado por una compaA�A�a desde cero ofrece un entorno robusto y tiene un modo consistente de trabajo))

Cada uno tiene sus caracterA�sticas con sus ventajas e inconvenientes. IntelliJ es un producto comercial, creado por una empresa, y con un diseA�o monolA�tico, mientras que Eclipse es un nA?cleo que se acompaA�a de multitud de complementos. Por su parte, NetBeans es un producto A?nico que ya lleva todas las opciones, con lo que se instala desde un A?nico paquete.


A?CA?mo describirA�as cada una de estas alternativas con mA?s detalle? Comenzando, por ejemplo por IntelliJ

Pues IntelliJ es el entorno de desarrollo que tiene mejor editor de textos, aunque el resto de los competidores han ido imitando cualidades y se han reducido las diferencias. Y esto desde luego es clave para un programador, ya que es la parte de programa donde mA?s tiempo se pasa. Desde luego es que lidera el tema de tratamiento de textos, y ademA?s ha sido el primero en apostar por temas como refactoring, asA� como un potente quickfix.

Esto muestra pequeA�as bombillas que aparecen al lado del cA?digo y te sugieren correcciones si el cA?digo estA? mal, como un error sintA?ctico. Por ejemplo si en Java escribes una sentencia de tipo a�?Si A = Ba�?, esto produce un error de compilaciA?n en Java, ya que se necesita doble igualdad (A==B), pues ahA� salta un quickfix que te lo indica. Algunos no son correcciones sino mA?s bien sugerencias, para mejora del cA?digo. Por ejemplo, esto que has hecho asA�, quizA?s sea mejor de este otro modo. Y habitualmente tiene razA?n.

BA?sicamente es incorporar anA?lisis estA?tico de cA?digo, para sugerir cosas que pueden ser errores, bugs, o simplemente cA?digo que se puede mejorar. Si tienes una variable declarada en un mA�todo y nunca la usas, aparece un aviso indicando A?para quA� quieres esto? Y cosas similares, como inicializar una variable y no usarla.


Aparte, IntelliJ es un producto desarrollado por una compaA�A�a. Como ventajas de este producto es que lo han creado desde cero por una empresa, a diferencia de otros basados o derivados de Eclipse, que es lo mA?s comA?n actualmente en este campo. Esto aporta que sea un entorno robusto y tiene un modo consistente de trabajo. Si hay que configurar una conexiA?n a una base de datos, que vas a usar para tener algA?n tipo de herramienta grA?fica para lanzar consultas, o para tener un esquema, o para usarla ademA?s desde JSP o decirle a tu mapeador objeto relacional que use esa conexiA?n, basta ponerla en un sitio y queda accesible para todo el mundo.

Eso parece un enfoque mA?s sA?lido A?cA?mo se valoran en este terreno Eclipse y NetBeans?

En NetBeans, y sobre todo en Eclipse, el entorno se construye aplicando plugins de procedencia diversa, lo que hace que cada uno de los elementos no conozca, ni pueda suponer siquiera, que ya estA? disponible la informaciA?n de un mA�todo o un acceso a datos. Lo que implica que, para cada uno de ellos hay que volver a reconfigurar la conexiA?n a la base de datos. Eso es algo que cualquier programador valor y que a mi me encanta. La herramienta con las que mA?s he trabajado en JavaBeans y echo en falta algo similar. AdemA?s en IntelliJ todo esta creado del mismo modo porque estA? hecho por el mismo equipo.

((En los A?ltimos aA�os Sun ve claramente a NetBeans como una de sus herramientas para fomentar el empleo de sus estA?ndares sobre Java))

Yo he empleado tanto NetBeans como Eclipse, para aprovechar lo mejor de cada uno, como comentarA� mA?s adelante. Y en cada caso, como estA?s usando un plugin diferente hay un modo distinto de trabajo, y lo mismo cuando cambias o usas otro plugin. Por ejemplo el soporte de UML es un a�?pegotea�? en netbeans. Se nota que era un proyecto desarrollado por una empresa y que tras ser comprado por Sun se insertA?, con a�?calzador y vaselinaa�? dentro del entorno.

De hecho, para trabajar con UML tienes que crearte otro proyecto que es el de UML y trabajas con dos proyectos uno para el cA?digo fuente y otro para UML, que son dos cosas independientes. Y este tipo de inconvenientes lo tienen tanto Eclipse como NetBeans.


Para mi estos entornos son como Frankenstein, hechos a cachitos, un montA?n de proyectos libres apoyados sobre un nA?cleo comA?n, desarrollado por Sun o IBM. Pero no acaba siendo un entorno tan redondo como es IntelliJ o era JBuilder. Y digo era, porque JBuilder, a partir de la versiA?n 2007 se ha creado como un Eclipse mA?s plugins, mientras que las anteriores estaban construidas desde abajo por Borland, con lo que tenA�an una forma consistente de trabajo.

Por ello yo sigo usando JBuilder 2006, porque la versiA?n 2007 no me convenciA? en absoluto. Las herramientas de Borland eran muy completas en cuanto al entorno, aunque no se si podA�a justificar el precio de las mismas, en torno a 3.000 o 4.000 $.

Y por otra parte, A?cuA?ndo usar NetBeans y cuA?ndo Eclipse ya que los dos son gratuitos?

Bueno antes de entrar en ese tema habA�a que explicar un punto que creo es clave para entender la diferencia que hay entre ellos. Y es detallar cA?mo funciona la plataforma Java. En la plataforma Java hay un organismo de organizaciA?n, que se denomina Java Community Process que estA? dirigido por Sun, y en el que participan del orden de otras 800 empresas. En algunos casos tambiA�n individuos, y todo el mundo tiene voto ahA�. Este organismo es que se encarga de definir las especificaciones o estA?ndares que forman parte de la plataforma.

Pueden ser tanto las especificaciones que se denominan paraguas porque engloban a otras especificaciones, como Java SE, Java ME, etc, y dentro de ellas hay mA?s especificaciones. Por ejemplo, dentro de Java EE estA? la especificaciA?n JPA persistencia y tambiA�n JP 3.0 que ademA?s de persistencia aA�ade otros temas. Esos estA?ndares aunque estA�n definidos por todas las empresas, quiA�n mA?s los respalda y mA?s los apoya y fomenta es Sun Microsystems. Que es quien controla Java a nivel de marca. Y desde Sun se fomenta el estA?ndar frente a cualquier otra posibilidad.

Por otro lado, en la comunidad Java hay entre 4 y 6 millones de programadores, los nA?meros varA�an segA?n la fuente, y una buena parte de ellos se dedica a crear software libre, con lo que tienen sus ideas y su forma de programar y cA?mo hacer las cosas. Con lo cual miles de librerA�as, frameworks y soluciones que son de software libre. Y que muchas veces compiten de modo directo con esos estA?ndares y especificaciones. AsA�, por ejemplo, tienes algo como Hibernate, que es un mapeador de objetos relacionales, que es competencia directa de la especificaciA?n JPA. O algo como Spring, no se si llamarlo un framework, que es una alternativa a todo lo que es stack Java E.

AsA� que la elecciA?n entre NetBeans y Eclipse depende de cA?mo se oriente el programador respecto al estA?ndar A?Es asA�?

Si uno se dedica a trabajar directamente con las especificaciones, habitualmente Netbeans estA? mejor adaptado que Eclipse. Entre otras cosas, porque, para mi, en los A?ltimos aA�os Sun ve claramente a NetBeans como una de sus herramientas para fomentar el empleo de sus estA?ndares. NetBeans es siempre el primero y el que mejor cumple y da soporte a las nuevas especificaciones. Si uno opta por trabajar con pA?ginas JSE, JB 3P, con JPA, probablemente NetBeans sea el que mejor soporte le proporcione.

Por otra parte NetBeans, hasta la versiA?n 6 tenA�a un punto dA�bil, que era su editor, aspecto que se ha mejorado de forma notable y estA? ahora a par con Eclipse. Aunque en Java siempre se ha contado con todo un amplio conjunto de soluciones de software libre.

Eclipse tiene una comunidad mA?s amplia, con mayor nA?mero de empresas detrA?s, y so se nota. AsA�, para cualquier framework, librerA�a o lo que quieras, en software Java, es fA?cil que primero se escriba un plugin para Eclipse y es el que mA?s recursos y opciones tiene. Luego, si se lo pueden permitir, sacan algo para Netbeans.

Si uno se va a las cosas alternativas, casi seguro que le conviene optar por Eclipse. Si uno quiere trabajar con Spring, NetBeans no es la mejor opciA?n, sino que hay que decantarse por Eclipse. AsA�, por ejemplo, hay un conjunto de plugins, que llaman SpringIDE (http://springide.org/project), que realmente es Eclipse con un conjunto de plugins para trabajar con Spring.

Si se quiere trabajar con Hibernate, pues hay una serie de compaA�A�as que toman Eclipse le colocan una serie de plugins encima y lo venden o lo regalan como entorno de desarrollo. Por ejemplo, JBoss (http://www.jboss.org/) que es un servidor de aplicaciones y tiene un IDE para trabajar con su servidor de aplicaciones.

Desde luego esa es la primera gran distinciA?n que harA�a. Netbeans ha mejorado mucho en los A?ltimos aA�os, hasta entonces estaba notablemente por debajo, pero con los A?ltimos cambios que ha incorporado A?ltimamente, el editor de cA?digo, soporte de refactoring y un soporte para control de versiones muy bueno, creo que se ha puesto al mismo nivel.

AsA� que la principal distinciA?n que harA�a para decantarse por uno u otro es la de mayor o menor conformidad con el estA?ndar. Pero si deseas optar a cosas mA?s avanzadas, y que no cuentan con la aprobaciA?n de Sun, Eclipse resulta recomendable. En algunos casos se trata de que no se han puesto de acuerdo en cA?mo hacer las cosas y por una parte Sun trabaja sobre el estA?ndar y otros se separan del mismo para lograr ciertos resultados. 

Etiquetas

Noticias relacionadas

Comentarios

No hay comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Debes haber iniciado sesión para comentar una noticia.