A Java Mind map by the London Java Community www.londonjavacommunity.co.uk

Get Started. It's Free
or sign up with your email address
A Java Mind map by the London Java Community www.londonjavacommunity.co.uk by Mind Map: A Java Mind map by the London Java Community www.londonjavacommunity.co.uk


1.1. What is this

1.1.1. This is the first LJC collaborative mindmap to break down the language

1.1.2. Its a mindmap http://en.wikipedia.org/wiki/Mind_map

1.1.3. Barry's original post: I’m not sure if it will be as effective as I hope, but my gut feeling is that it will help non-techies and people that don’t use Java to understand how things fit together in the language so that the can better understand technical conversations. I also feel it could have potential for junior developers to form an idea how everything fits together. I also feel personally that it may actually also help developers of all levels to see where their skills lie and potentially where they need to develop further. Especially as one of the most popular rejections for interview is that the candidate didn’t know what they knew and what they didn’t know. I also feel that it could help provide the spine of a technology portfolio of a CV.


1.2.1. How should we break Java down into smaller chunks?- Here's a start... Where do these terms fit into the Javasphere? (Please put them into the map somewhere) OOAD i18n Questions Language, platform or APIS? All of the above Please add notes and questions in red through the map - Barry

1.2.2. If you would like to take part and edit it yourself then let me know and I'll send you an invitation - [email protected] Feel free to add / remove / edit / group / ungroup / connect any part of this map

1.3. Etiquette of this map

1.3.1. Feel free to add / remove / edit / group / ungroup any part of this map Add notes. AKAs are helpful.

1.4. Aims of this map

1.4.1. To find the most 'elegant' way to break the language down So that it can be read by technical and non technical people alike


3. Versions

3.1. JDK 1.0

3.2. JDK 1.1

3.2.1. Inner Classes

3.2.2. Java Beans

3.2.3. JDBC

3.2.4. RMI

3.3. JDK 1.2

3.3.1. Swing

3.3.2. JIT

3.3.3. CORBA

3.3.4. Collections Package

3.4. JDK 1.3

3.4.1. HotSpot

3.4.2. JNDI

3.4.3. JPDA

3.5. JDK 1.4

3.5.1. assert keyword

3.5.2. Perl 5 Regexps

3.5.3. NIO

3.5.4. logging API

3.5.5. Crypto API

3.5.6. XML

3.5.7. WebStart

3.6. JDK 1.5

3.6.1. Concurrent

3.6.2. Generics

3.6.3. Annotations

3.6.4. enumerations

3.6.5. varargs

3.6.6. foreach

3.6.7. JMX

3.6.8. TI

3.6.9. Autoboxing

3.7. JDK 1.6

3.7.1. Scripts

3.7.2. Drag and Drop

3.7.3. Instrumentation

3.7.4. XML Digital Signature API

3.7.5. Smart Card I/O

3.7.6. Elliptic Curve Cryptography

3.7.7. Access Network Security Services

3.7.8. FIPS 140 (JSSE)

3.7.9. DTrace Probes

3.7.10. JDBC 4

3.8. JDK 1.7

3.8.1. Project Coin

3.8.2. Jigsaw

3.8.3. G1 garbage collector

4. Related technologies

4.1. Extensions

4.1.1. SQL

4.1.2. security JAAS SSL policy files

4.1.3. XML XSLT Parsers DOM SAX Apache Projects Cocoon Xalan FOP Batik Xerces JAXP

4.1.4. transactions JTA

4.1.5. sound/media JMF

4.1.6. Mail

4.2. Popular frameworks

4.2.1. Testing JUnit XMLUnit Cactus

4.2.2. Dependency Injection Spring Pico Container Guice

4.2.3. Web MVC Apache Struts Spring MVC Java Server Faces GWT

4.3. JVM

4.3.1. Compilers Sun javac IBM Jikes ECJ (Eclipse Compiler for Java) GCJ non-bytecode compilers GWT Java to JavaScript compiler

4.3.2. Byte Code Code Generation JavaCC AntLR Byacc/J

4.3.3. Garbage Collection PhantomReference SoftReference WeakReference Generational GC G1

4.3.4. Alternate Languages Based on Other Languages JRuby Jython lisps Rhino Fortress Written for JVM Clojure Scala Groovy Ioke Beanshell JavaFX Extensions AspectJ Almost Java but not quite J++ GAE/J Dalvik/Android

4.3.5. JIT Compilation

4.3.6. Platforms J2ME / Mobile J2SE Windows UNIX / Linux MacOS J2EE

4.3.7. Implementation HotSpot J9 IBM JVM Microsoft VM (dead) JRockit Harmony JAM VM

5. Java Constituents

5.1. Language

5.1.1. syntax, marker interfaces, philosophy, style

5.1.2. Annotations

5.1.3. Primitive types Inboxing/Outboxing

5.1.4. Exceptions Throwable marker throws / throw try / catch / finally


5.1.6. JNI

5.1.7. Methods Return Primitive Types Custome Types / Objects Parameters Primitive Types Custom Types / Objects Member/Overloading/Overriding Methods

5.1.8. Modifiers Concurrency synchronized volatile Access modifiers Public Protected Package view / Default Private native transient final

5.2. utility

5.2.1. Compression

5.2.2. logging Log4J Commons SLF4J Logback

5.2.3. Preferences

5.2.4. regular Expressions

5.3. networking

5.3.1. RMI

5.3.2. Web Services

5.3.3. CORBA

5.3.4. Sockets

5.4. Core

5.4.1. Maths StrictMath

5.4.2. IO Input Readers Streams Output Writers Streams

5.4.3. Collections Collection Set List Queue Map SortedMap HashMap Old Vector Hashtable Iterators Algorithms Comparator interface

5.4.4. Embedded Databases Berkeley DB Java Edition HSQL Apache Derby

5.4.5. Concurrency Thread class Runnable interface Locks Read/Write locks ReentrantLock Atomic operations Atomic objects AtomicInteger AtomicLong AtomicReference Task execution ExecutorService interface Callable<T> interface Future<T> Concurrent containers ConcurrentMap ConcurrentLinkedQueue ArrayBlockingQueue LinkedBlockingQueue Synchronization utilities CyclicBarrier CountDownLatch Exchanger

5.4.6. Exceptions Unchecked RuntimeException Error Checked IOException SQLException

5.4.7. Object equals hashCode wait / notify / notifyAll

5.4.8. JavaBeans

5.4.9. Reflection

5.4.10. Serialization

5.4.11. Class Classloaders

5.5. JavaDoc

5.5.1. Doclets

5.6. Tools

5.6.1. IDE IntelliJ IDEA Eclipse MyEclipse editors emacs vi NetBeans

5.6.2. Profiling tools JProfiler VisualVM jhat

5.6.3. Build Tools Ant Maven Surefire Gradle Gant Continuous Integration Hudson

5.6.4. That come with the JDK jar javac jhat jdb policytool rmic idlj javah javap appletviewer

5.6.5. Debuggers

5.6.6. Testing Checkstyle PMD

5.6.7. Disassemblers JAD

6. Concepts

6.1. Modularity

6.1.1. OSGi Implementations Equinox Felix Knopflerfish Component Models Blueprint Container Declarative Services iPOJO

6.1.2. Jigsaw

6.1.3. JSR 294 Superpackages Module keyword SimpleModuleSystem

7. Types of programming

7.1. Server side / SOA / J2EE

7.1.1. persistence Relational JDBC Object Based JDO CMP JPA XML XStream

7.1.2. EJB EJB 2.0 EJB 3.0 Types Session Entity Message-driven

7.1.3. Application servers JBoss WebLogic SAP NetWeaver Glassfish WebSphere

7.1.4. Naming JNDI LDAP

7.1.5. Web Services SOA ReST XML/RPC SOAP WS-*

7.1.6. JMS MQSeries Tibco EMS ActiveMQ

7.1.7. Java-based Servers Database HSQL Apache Derby Servlet containers Apache Tomcat Jetty servletrunner (obsolete) E-Mail Apache James FTP Colorado

7.2. GUI / Client Side

7.2.1. Thick Client Swing PLAF AWT SWT Eclipse RCP

7.2.2. Win/Form Button Text Fields Single Line Text Field Multiple Line Text Field Dropdown Field Lablel

7.2.3. Client types Desktop WebStart Applet HTML-based servlet

8. Notes

8.1. Useful websites

8.1.1. java.sun.com

8.1.2. mindprod.com/jgloss/jgloss.html

8.2. Limitations of language

8.2.1. Multiple inheritance

8.2.2. Closures

8.2.3. Return multiple values

8.2.4. Continuations

8.2.5. No pass-by-reference

8.2.6. First-class method

8.2.7. Generic type erasure

8.3. Alternatives/competitors

8.3.1. Python

8.3.2. .Net

8.3.3. C/C++

8.3.4. Ruby

8.3.5. Objective C

8.3.6. Erlang