¿Qué debes aprender para ser un desarrollador de Java?

“Desarrollador Java” tiene múltiples significados por ahí. Intentaré cubrir algunos de ellos.

En común

  • Comprensión básica de la sintaxis y el funcionamiento de Java (por ejemplo, clases de recopilación, creación de la propia clase)
  • Error al manejar el uso de excepciones de manera razonable.
  • Serialización y deserialización de datos a / desde el disco a través de formas como la serialización JVM utilizando Serializable, XML / JSON, enlaces de base de datos
  • Comprensión básica de roscado.
  • Red simple (por ejemplo, hacer una solicitud HTTP, hacer un socket)
  • Administración del código fuente (control de versiones, integración continua, uso de un rastreador de errores)
  • Ser capaz de consultar la documentación de la API (javadocs).

Aplicación web

  • Todo lo enumerado en “en común”
  • Almacenamiento de datos en una base de datos (especialmente con acceso simultáneo a la base de datos)
  • Roscado intermedio (sincronización, control de acceso)
  • HTML + JS (no tiene uso tener un backend impresionante y una mala interfaz)
  • Entender el alcance de su proyecto / classpath / classloading en un Tomcat / JBoss / etc. servidor
  • Sintaxis de JSP con las bibliotecas de etiquetas (es posible pero no se recomienda no hacerlo con los scriptlets)
  • Seguridad (entrada de desinfección, prevención XSS, inyección de cadenas de consulta de base de datos, ingeniería social), especialmente si hay dinero involucrado

GUI

  • Todo lo enumerado en “en común”
  • Comprensión del modelo de subprocesamiento de su API (ya sea Android, Swing)
  • Comprensión de cómo se distribuyen los componentes, en qué circunstancias se actualizan y similares.
  • Saber qué hace un diseño utilizable .

Juego

  • Procesamiento de hilos y eventos realmente avanzado.
  • Red avanzada, si es multijugador.
  • Si es en tiempo real, el énfasis en las dos entradas anteriores
  • Cómo funcionan las funciones de renderización 3D / OpenGL, sombreadores, estrategias de rendimiento y similares.
  • Seguridad (como se indica para la aplicación web anterior)
  • Diseño eficiente de protocolo de red.

aplicación Android

  • Todo cubierto bajo GUIs
  • Manejo del cierre inesperado de la aplicación (debido al ahorro de energía, al deslizar de la lista de aplicaciones recientes y similares)
  • Usabilidad en varios dispositivos diferentes con diferentes tamaños de pantalla, especificaciones y factores de forma
  • Integración con una API muy vasta y en evolución.