¿Que particularidades o características de Java son las que utilizas con mayor frecuencia en tu vida profesional?

Hola que tal a todos, mientras checaba algunos temas de Java por la red, me cruzó por la mente, esta pregunta y me da curiosidad por saber la respuesta y supuse que no hay mejor sitio para saber la respuesta que en en esta comunidad de Java México.

Es decir, al programar profesionalmente en Java ¿sueles utilizar frecuentemente, herencia, polimorfismo, swing, rmi, etc?

Y también estoy consciente de que temas tales como herencia y polimorfismo caen más dentro de los que es la POO.

Eso es todo y espero haberme explicado. Nada mas quiero saber un poco de cómo es la vida profesional como programador en Java.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Demasiado vaga...

Creo que es demasiado vaga la pregunta...

En cualquier proyecto que he hecho en Java, siempre uso herencia... todos los objetos que hago implícitamente heredan de Object. Aparte de eso, he implementado varias interfaces de Java, he creado mis propias interfaces para darles una y en el futuro otra o más implementaciones, he creado clases abstractas para tener varias subclases con comportamiento similar...
Swing casi no uso, pero sí he hecho algunas aplicaciones muy sencillas con Swing (para probar algunas cosas nada más).
RMI sí he usado, tanto implementar un servicio RMI como invocarlo.
Pero fuera de eso no sé qué más te gustaría saber... si te refieres a librerías, las que yo uso en prácticamente cualquier proyecto nuevo son:

  • Spring, para manejar varios componentes de la aplicación y conectarlos, desde el DataSource hasta mis singletons y así ahorrarme el engorro de usar EJB's, y para interacciones simples con base de datos uso el SimpleJdbcTemplate.
  • log4j para logging, normalmente en conjunto con commons-logging o slf4j según lo que requieran los otros frameworks que uso
  • Tapestry para aplicaciones web
  • Hibernate para ORM's cuando se requiere
  • Axis para web services
  • jAlarms para aplicaciones de servidor que necesitan notificar a un humano cuando algun evento grave ocurre

Si te refieres a paquetes de Java (más allá de java.util y java.lang), depende mucho del proyecto pero llevo un rato ya usando con bastante frecuencia java.util.concurrent y java.net para manejar thread pools y sockets (cliente y servidor) de manera directa.

Imagen de cfpmx

Hola que tal, gracias por tu

Hola que tal, gracias por tu respuesta, realmente esperaba algo así como lo que me acabas de responder, es pregunta digamos algo general y un tanto personal, ya que me da curiosidad por saber con que se trabaja frecuentemente en Java y para mi también es interesante conocer en que trabajan alguno de los usuarios de aquí. Realmente no es una pregunta cultural y a muchos les puede no interesar tanto cómo es la vida de algunos de los por aquí.

PD: Respecto a la herencia, creo que es algo muy obvio que todos la utilizamos siempre por Object, así como también solemos utilizar final, abstract, implements prácticamente de manera forzada por que son particularidades de Java. Simplemente quería saber que tan frecuente sería por ejemplo, proyectos donde se utilice muchas jerarquías de herencia, por que estamos de acuerdo que también nos puede tocar hacer software, en la que la herencia no sea tan indispensable (y obviamente, teniendo en cuenta que todas nuestras clases van a heredar de Object). Y También estoy de consciente de que las respuestas pueden variar por persona y según el empleo que tengan, pero en fin, como les comenté, es una pregunta muy personal pero que también podría interesar a quienes a penas están por entrar en la vida profesional. Hasta luego y gracias.

Imagen de ezamudio

Herencia simple

Nunca me he encontrado en la necesidad de heredar más allá de 3 o 4 generaciones, cuando mucho. Es decir:

Object --> Miclase1 --> Miclase2 --> Miclase3 --> Miclase4

Incluso ahí ya se ve un poco exagerado. En mi experiencia a lo mucho se ven cosas como esto:

Interfaz --> Implementacion1 --> Subclase1

Tal vez todavía una subclase2 que herede de subclase1, pero nada más. De hecho si me encontrara algun dia con un caso de herencia de 5 niveles o más, revisaría minuciosamente el código y de ser posible interrogaría al autor o autores para entender las razones de tanta herencia, porque para mí es señal de mal diseño, o de falta de comunicación entre integrantes del equipo, cosas así.

Imagen de benek

En mi caso...

En mi caso las tecnologías Java con las que me encuentro más en proyectos son:

- Spring core ya en casi todos, su uso ya se generalizó.
- JavaServer Faces o algún framework derivado de él, como Woodstock (ya obsoleto) y ICEFaces.
- Log4j en casi todos los proyectos.
- Struts 1, todavía hay muchos sistemas legacy que requieren mantenimientos.
- En el caso de persistencia solo me he encontrado con Hibernate en varios proyectos, no me he encontrado con iBatis u otros ORM's.
- He hecho un par de proyectos pequeños con SWT, la librería GUI de Eclipse... y no me he encontrado en ninguno de Swing.

En resumen eso es lo más recurrente en mi caso.

Saludos!

Javier Ramírez Jr.

Imagen de iberck

En lo particular las

En lo particular las tecnologías que utilizo referentes a java son:

- J2ME para aplicaciones moviles, muy en resumen con las siguientes tecnologías:
- CDC, CLDC, MIDP, J2ME Polish, SuperWava
- Para el escritorio: Netbeans Rich Client Platform, Swing/AWT
- Para la web y otras cosas: T5, JSF, Struts, Ant, Maven, slf4j (logging) Spring, Hibernate ...

https://nbtapestrysupport.dev.java.net/

Imagen de jali

Pues... en general

Maven, log4J, JSF, un poco de struts.
Sobre herencia y polimorfismo... pues en todos mis proyectos.
RMI un poco
Axis para webservices
Spring en algunos proyectos al igual que hibernate
Y no me he metido mucho a escritorio asi que de swing no se mucho.

Un saludo