Estoy a punto de comenzar mi primer puesto profesional como desarrollador de software, y probablemente escribiré mucho código Java. No sé mucho acerca de lo que escribiré específicamente, y además, tengo intereses bastante amplios cuando se trata de código de todos modos.
Por razones que no vale la pena discutir, mi última pasantía me hizo codificar solo para los SDK de Java 1.3 y 1.4. Además, mi educación universitaria se ha centrado principalmente en algoritmos, estructuras de datos y otras teorías, no en características del lenguaje o bibliotecas.
Entonces, con lo anterior en mente, ¿qué características, clases, etc. en la versión actual de Java (de todos modos, ¿en qué número estamos ahora?) Valdría la pena leer y por qué? ¿Qué me he perdido desde 1.4.2 que te hace la vida más fácil como programador?
Ejemplos e historias de cómo descubrió un paquete en particular o algo así y lo puso en uso también sería genial.
Respuestas:
Los cambios que considero más importantes son:
Lea también ¿A qué Java apunta? , para comprender mejor cada una de las tres versiones.
fuente
for
bucles mejorados "?El cambio más importante en su vida diaria de programación es la introducción de genéricos que probablemente se utilizarán en cada módulo nuevo que se le pedirá que escriba, y es una sintaxis nueva y confusa.
El genérico es el mecanismo que permite, por ejemplo, que
List
a contenga cadenas en lugar de objetos desnudos, donde el compilador exige que un elemento que se incluya en la lista sea una Cadena, y sabe que cuando obtiene un elemento de una lista es una Cadena .Esto mejora los programas ya que evita el tiempo de ejecución explícito al tipo de destino (que es una fuente frecuente de errores si se equivoca) y el IDE puede ayudarlo a hacer todo el trabajo sucio ya que sabe mucho más sobre su código que lo hizo cuando era solo una lista de objetos.
Joshua Bloch ha escrito una buena introducción a los genéricos, que está disponible como el capítulo de muestra en http://java.sun.com/docs/books/effective/
fuente
def whatever
....id
cuál esdef
ovar
... pero, una vez más, la seguridad de la escritura 100% estática es increíble, realmente.Autoboxing es una buena característica introducida con Java 5. Al igual que en C #, el compilador ahora realiza una conversión automática entre los tipos primitivos (básicos) y sus correspondientes clases de contenedor de objetos (int a Integer, etc.) y viceversa. Eso hace que trabajar con Java Collections sea mucho menos doloroso.
Creo que también cada uno de los bucles era nuevo en Java 5. Facilita la iteración sobre matrices (y colecciones), ya que elimina gran parte del desorden habitual que involucra la configuración y administración de una variable de índice o iteradores. En el ejemplo:
fuente
Enums , para reemplazar las estadísticas y constantes finales y ayudarlo a eliminar referencias a cadenas y números mágicos. Un ejemplo tomado de las buenas personas en sun / orracle :
y
fuente
java.util.concurrent se introdujo en 1.5. El mejor recurso para aprenderlo es (probablemente) el libro Java Concurrency in Practice . La concurrencia en mi humilde opinión es la ventaja competitiva más importante de Java en comparación con cualquier otra cosa, por lo que definitivamente vale la pena conocerla bien.
fuente
java.util.concurrent
para las primitivas de concurrencia es como la administración automática de memoria para la administración manual de memoria. Usar este último es solo una receta para dedicar más tiempo a la depuración y no ofrece ventajas.Bueno,
StringBuilder
me ayudó a acelerar mi programa. Es equivalente a laStringBuffer
seguridad sin rosca.fuente
+
cadenas utiliza automáticamente StringBuilder en lugar de StringBuffer para el nivel de origen 1.5 y superior.Ayudaré clasificando la respuesta útil de @ykombinator. Su lista es una lista de los elementos que usará diariamente mientras realiza el desarrollo "general" de Java.
Bajo impacto y baja dificultad:
Alto impacto y dificultad media:
Alto impacto y alta dificultad:
Bajo impacto y alta dificultad (solo se usará a menos que realice un enhebrado avanzado)
Por lo tanto, te sugiero que leas los documentos / ayuda sobre piezas difíciles y de bajo impacto: son fáciles de aprender. Pase mucho tiempo en anotaciones y genéricos: las anotaciones son muy útiles y los genéricos pueden ser bastante complicados.
Solo mire el nuevo contenido de concurrencia si necesita hacer subprocesos.
fuente
Como no puedo comentar porque tengo menos de 50 años, dejaré una respuesta. Ya se ha mencionado pero lo repetiré de nuevo: ¡Anotaciones! Este tipo de metadatos se convirtió en lo más importante en mis años de experiencia en Java. Se usa bien como lo hacen algunos frameworks, lo que hace que el código sea mucho más conciso y limpio. Por ejemplo, las anotaciones pueden:
Y, por supuesto, puede crear sus propias anotaciones y saber si un método, clase o campo se anota mediante la reflexión.
fuente
Aprender con el ejemplo me funciona
Aquí hay un ejemplo rápido de idiomática Java 6
No te molestes con Java5, está en desuso con respecto a Java6.
Siguiente paso, anotaciones. Estos solo definen aspectos de su código que permiten a los lectores de anotaciones completar la configuración estándar por usted. Considere un servicio web simple que utiliza la especificación JAX-RS (comprende los URI RESTful). No desea molestarse en hacer todo el desagradable WSDL y en jugar con Axis2, etc., desea un resultado rápido. Bien, haz esto:
Explosión. Con un poco de magia de configuración en tu web.xml, estás listo. Si está compilando con Maven y tiene configurado el complemento Jetty, su proyecto tendrá su propio pequeño servidor web listo para usar (no tiene que jugar con JBoss o Tomcat para usted), y el código anterior responderá a los URI del formar:
Trabajo hecho.
fuente
¡Guau, eso fue una explosión del pasado! No he usado Java durante 4 años, ¡y nada ha cambiado en absoluto en ese tiempo!
Hay una lista de características por versión , pero aquí está el bit importante (plagiado, por supuesto) ...
J2SE 5.0 (30 de septiembre de 2004)
Java SE 6 (11 de diciembre de 2006)
Eso es todo. Java SE 7.0 parece más interesante pero aún no se ha lanzado.
Teniendo en cuenta cuántas nuevas funciones de lenguaje y API se han agregado a C # en los últimos 4 años, estoy bastante asombrado. ¿Qué ha estado sucediendo en Sun / Oracle?
fuente