Todavía soy un estudiante universitario y estudio para mi B.Sc en CSE. En realidad me encanta el lenguaje de programación Java. ¿Qué cosas debo saber para ser un programador realmente bueno en Java?

Para ser un programador experto en Java, la mejor manera es involucrarse en proyectos del mundo real donde Java es el lenguaje principal de desarrollo. Java puede aplicarse a la mayoría de las áreas, por lo que depende de qué áreas le interesen. Por ejemplo, si está interesado en el desarrollo web, familiarizarse con los marcos J2EE, codificar con JSP o Servlet. Para dispositivos móviles, practique con desarrollos de Android en su clase de ingeniería de software.

A la larga, qué lenguaje de programación usar realmente no importa, ya que la popularidad cambia y el lenguaje mismo evoluciona. La clave es comprender bien los lenguajes de programación en general. ¿Por qué preferimos OOP que procedimientos? ¿Por qué se nos ocurren muchos patrones de diseño? ¿Por qué hay tanta gente como los lenguajes de programación funcionales puros? Dado que cada lenguaje tiene sus pros y sus contras, y los buenos incluirían esas buenas características en el futuro (por ejemplo, de Java 6 a 7 a 8, de C ++ 0x a 1y).

En la universidad, una clase de concepto de lenguaje de programación o una clase de diseño de compilador definitivamente resolvería estos misterios de idiomas, y definitivamente te ayudará con cualquier nuevo idioma para aprender.

Aprender programación orientada a objetos. Java es una herramienta que aprende a usar la herramienta de manera eficiente para convertirse en un artesano. La programación orientada a objetos es la metodología que los lenguajes Java / C ++ / otros están diseñados para soportar. Hay muchos libros excelentes y ejemplos en línea.

Su código es tan bueno como sus habilidades de diseño. Sus diseños deben enfatizar la capacidad de mantenimiento, la extensibilidad, la legibilidad y la simplicidad, al tiempo que abstraen los requisitos en objetos lógicos con un propósito sensible.
Debería poder proponer varios diseños, sopesar sus méritos respectivos y elegir el mejor diseño. Hay mil maneras de cortar el pan o resolver un problema en el código. Elegir siempre el primero que se te pase por la cabeza obstaculizará tu crecimiento profesional.
Gasta cantidades considerables de perfeccionamiento y refinamiento de tus habilidades de diseño. Esto se aplica a toda la informática por cierto.

Depende de lo que quieras aprender.
Lo básico se puede aprender de un libro.
Sugeriría también aprender sobre Scrum, Test Driven Development, git y tecnologías web como servicios web y desarrollo web / JavaScript básico (por ejemplo, si aprende algo como AngularJS, puede vincular eso con el aprendizaje de servicios web en Java )
Una buena manera de aprender muchas tecnologías relacionadas con Java es aprender el marco de Spring: comience con los conceptos básicos para que comprenda las ideas básicas sobre la inyección de dependencias (es decir, no hacer que los códigos dependan unos de otros, sino que inyecte las dependencias a través de la configuración o mediante convención a través de la anotación), pero luego continúe aprendiendo Spring MVC, Servicios web, Spring Security, Spring Integration, etc.
Mucho de esto se puede cubrir contribuyendo a un proyecto en github, así que consiga una ventaja inicial y encuentre un proyecto que pueda bifurcar y contribuir que cubra algunas de las habilidades que desea aprender. Puede comenzar corrigiendo los errores que se han publicado y pasar a contribuir de maneras más significativas, como contribuir con una funcionalidad importante.

El cielo es el límite..!
Si es bueno con los conceptos básicos y comienza con temas como manejo de excepciones, subprocesamiento múltiple y programación concurrente, JDBC.
Una vez que pueda manejar esto en código, concéntrese en las mejores prácticas de codificación. Escribir un código y una lógica es fácil, pero tener las mejores prácticas de codificación es imprescindible para trabajar en la industria.
Una vez que tenga una buena experiencia práctica, avance a temas avanzados como Spring, Hibernet, Struts.
Mientras tanto, hay toneladas de bibliotecas diferentes dentro de Java para que explore.

Feliz codificación ..!

Conviértete en un buen desarrollador en Java. Con eso quiero decir, ser bueno en las pruebas (Mockito, Junit, Spock, etc.), bueno en la gestión de calidad (sonarqube y todos sus complementos), etc.

Entonces estoy de acuerdo con Rohan; se vuelven buenos en el manejo de excepciones, lambdas, JDBC, Streams, programación concurrente (incluidos diferentes modelos de concurrencia como STM y actores).

Me mantendría alejado de los puntales, creo. Spring tiene un buen marco MVC (SpringMVC). ¡Pero me alegra que disfrutes del desarrollo de Java! hay demasiados poseurs por ahí, por un dinero rápido (o lakh; supongo que eres de la India)