# Java Software Engineer Skill Map
## Basic### Core Java- Java The Complete Reference Ninth Edition.pdf * Core + Basic Language Characteristics - Data Types - Syntax - Control Flow + Object-Oriented - Class - Object - Method - Interface - Inheritance + Miscellaneous - Generics - Autoboxing - Enumerations - Annotations + Parallelism - Multithreaded Programming + Functional Programming - Lambda Expression - Stream API * Commonly-used Libraries + String Handling - java.lang.String - StringBuffer and StringBuilder - Regular Expression + java.lang.* + java.util.* - Collections Framework - Concurrency Framework - i18n or g11n * Currency * Data & Time * Language Locale - Miscellaneous Utilities + java.io.* + java.nio.* + java.net.* + java.rmi.* + java.sql.* + javax.sql.*### Algorithms & Data Structure
- Algorithms * * https://www.coursera.org/learn/java-data-structures-algorithms-2 * https://www.coursera.org/learn/introduction-to-algorithms- Data Structures * * https://en.wikipedia.org/wiki/List_of_data_structures * http://www.tutorialspoint.com/data_structures_algorithms/- Object Oriented Programming * * head_first_design_patterns.pdf * Effective Java 2nd Edition.pdf- Computer Architecture * Memory Hierarchy * Parallelism * Multiprocessor Systems- Operating System * Memory Management * MemProcess Management * MemFile System *- Computer Network * OSI Model * TCP/IP * HTTP / HTTPS * HTTP 1.X / HTTP 2### Essentials
- Linux/Unix * Shell commands (bash) (http://linuxcommand.org/index.php) + Text Processing - AWK / SED + File Operation - cd/ls/find/ (Pipe and I/O Redirection) * VIM / Emacs ( Either of them) * Shell Script(bash)- Java Commonly-used 3rd-party Libraries * Logging + log4j + slf4j + logback * Unit Test + Junit + Mockito + TestNG * Code Coverage + jacoco + Clover + EMMA * Apache Commons + commons-io + commons-lang + commons-math + commons-codec + commons-collections + commons-beanutils + commons-logging + ... * Apache HttpComponents * Google Guava- Software Engineering * Project Organization + Maven + Gradle + Ant + Ivy (Optional) * Versioning + git + svn * UML### Front-end (Web)
- Web Development (http://www.w3schools.com) * HTML + HTML4 + xhtml + HTML5 * css + css2 + CSS3 * Data Representation + XML + JSON + JSONP * Javascript + ECMAScript 6 + Basics (https://developer.mozilla.org/en-US/docs/Web/JavaScript) + Ajax + AngularJS (plus) + JQuery (plus) * TypeScript * Responsive Web Page development (plus)### Back-end Development(Server side)
- JavaEE * JSP * * JSTL * Java Servlet * * JavaServer Faces * * JPA * * JTA * * JAX-RS * * Managed Beans / CDI 1.1/ DI /IOC * Bean Validation * JAX-WS * JavaMail * JACC * JASPIC * Java WebSocket * Java JSON Processing * Concurrency Utilities for JavaEE * Batch processing framework- Java Containers * Tomcat / TomEE * GlassFish * Jetty- Java mid-ware * Spring + Spring-Framework (Dependency Injection & AOP) + Spring-Web + Spring-Data + Spring-security + Spring-boot (Micro-service Architecture) * Struts(MVC) * SpringMVC * Hibernate/JPA (Data Persistency) * MyBatis- Java Performance Tuning * java performance the definitive guide.pdf- Database * MySQL * SqlServer * Oracle * Nosql + Memcache + Redis + MongoDB + Neo4j- Serialization * Google protobuf * Apache Avro- Java RPC * Apache Thrift * Motan- MessageQueue * AMQP - RabbitMQ * Apache ActiveMQ * Apache Kafka- Messaging * XMPP- Searching/Indexing * Apache Lucene * Apache Solr * Elasticsearch * CoreNLP- Big Data(Optional) * Hadoop + Yarn (MapReduce) + HDFS + HBase + Hive + Mahout * Spark + Spark-Core + Spark-SQL + Spark-machine learning + Spark Streaming * Apache Storm- Cloud * Scalable Architecture + VM - OpenStack + Container - Docker * Hands-on + Amazon AWS - EC2 - S3 - DynamoDB- JVM-based Programming Language * Scala * Groovy * Clojure * Kotlin * http://www.oracle.com/technetwork/articles/java/architect-languages-2266279.html### IDE
- IntelliJ IDEA- NetBeans- Eclipse### Typical Java Applications
- Online Chatting (Web/Desktop System)- Library Management System (Web System)- Ticket Booking System(RESTful Web Service)- HTTP File Downloader (Console / Desktop)- P2P File Sharing (Console / Desktop)- Blogging System (Web / REST)- RDBMS UI Toolkit (Web /Desktop)### Desktop Development
- awt- Applet- swing- Netbeans Platform- JavaFX- swt### Mobile Development
- Android- JavaME