I'm a java developer. I'm trying to get more knowledge to become a better programmer. I've listed a number of technologies to learn. Instead of what I've listed, what technologies would you suggest to learn as well for a Junior Java Developer? I realize, there's a lot of things to study.
Java:
- how a garbage collector works
- resource management
- network programming
- TCP/IP HTTP
- transactions,
- consistency: interfaces, classes
collections, hash codes, algorithms, comp. complexity
concurrent programming: synchronizing, semafores
steam management
metability: thread-safety
byte code manipulations, reflections, Aspect-Oriented Programming as base to understand frameworks such as Spring etc.
Web stack: servlets, filters, socket programming
Libraries: JDK, GWT, Apache Commons, Joda-Time, Dependency Injections: Spring, Nano
Tools:
IDE: very good knowledge
- debugger
- profiler
- web analyzers: Wireshark, firebugs
- unit testing
SQL/Databases:
Basics
SELECTing columns from a table
Aggregates Part 1: COUNT, SUM, MAX/MIN
Aggregates Part 2: DISTINCT, GROUP BY, HAVING +
Intermediate
JOINs, ANSI-89 and ANSI-92 syntax +
UNION vs UNION ALL x
NULL handling: COALESCE & Native NULL handling
Subqueries: IN, EXISTS, and inline views
Subqueries: Correlated
ITH syntax: Subquery Factoring/CTE
Views
Advanced Topics
Functions, Stored Procedures, Packages
Pivoting data: CASE & PIVOT syntax
Hierarchical Queries
Cursors: Implicit and Explicit
Triggers
Dynamic
SQL
Materialized Views
Query Optimization: Indexes
Query Optimization: Explain Plans
Query Optimization: Profiling
Data Modelling: Normal Forms, 1 through 3
Data Modelling: Primary & Foreign Keys
Data Modelling: Table Constraints
Data Modelling: Link/Corrollary Tables
Full Text Searching
XML
Isolation Levels
Entity Relationship Diagrams (ERDs), Logical and Physical
Transactions: COMMIT, ROLLBACK, Error Handling