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. READ ME

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

1.1.2.1. 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. GET INVOLVED!!!

1.2.1. How should we break Java down into smaller chunks?- Here's a start...

1.2.1.1. Where do these terms fit into the Javasphere? (Please put them into the map somewhere)

1.2.1.1.1. OOAD

1.2.1.1.2. i18n

1.2.1.2. Questions

1.2.1.2.1. Language, platform or APIS? All of the above

1.2.1.2.2. 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]

1.2.2.1. 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

1.3.1.1. 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

1.4.1.1. So that it can be read by technical and non technical people alike

2. Versions

2.1. JDK 1.0

2.2. JDK 1.1

2.2.1. Inner Classes

2.2.2. Java Beans

2.2.3. JDBC

2.2.4. RMI

2.3. JDK 1.2

2.3.1. Swing

2.3.2. JIT

2.3.3. CORBA

2.3.4. Collections Package

2.4. JDK 1.3

2.4.1. HotSpot

2.4.2. JNDI

2.4.3. JPDA

2.5. JDK 1.4

2.5.1. assert keyword

2.5.2. Perl 5 Regexps

2.5.3. NIO

2.5.4. logging API

2.5.5. Crypto API

2.5.6. XML

2.5.7. WebStart

2.6. JDK 1.5

2.6.1. Concurrent

2.6.2. Generics

2.6.3. Annotations

2.6.4. enumerations

2.6.5. varargs

2.6.6. foreach

2.6.7. JMX

2.6.8. TI

2.6.9. Autoboxing

2.7. JDK 1.6

2.7.1. Scripts

2.7.2. Drag and Drop

2.7.3. Instrumentation

2.7.4. XML Digital Signature API

2.7.5. Smart Card I/O

2.7.6. Elliptic Curve Cryptography

2.7.7. Access Network Security Services

2.7.8. FIPS 140 (JSSE)

2.7.9. DTrace Probes

2.7.10. JDBC 4

2.8. JDK 1.7

2.8.1. Project Coin

2.8.2. Jigsaw

2.8.3. G1 garbage collector

3. Related technologies

3.1. Extensions

3.1.1. SQL

3.1.2. security

3.1.2.1. JAAS

3.1.2.2. SSL

3.1.2.3. policy files

3.1.3. XML

3.1.3.1. XSLT

3.1.3.2. Parsers

3.1.3.2.1. DOM

3.1.3.2.2. SAX

3.1.3.3. Apache Projects

3.1.3.3.1. Cocoon

3.1.3.3.2. Xalan

3.1.3.3.3. FOP

3.1.3.3.4. Batik

3.1.3.3.5. Xerces

3.1.3.4. JAXP

3.1.4. transactions

3.1.4.1. JTA

3.1.5. sound/media

3.1.5.1. JMF

3.1.6. Mail

3.2. Popular frameworks

3.2.1. Testing

3.2.1.1. JUnit

3.2.1.1.1. XMLUnit

3.2.1.2. Cactus

3.2.2. Dependency Injection

3.2.2.1. Spring

3.2.2.2. Pico Container

3.2.2.3. Guice

3.2.3. Web

3.2.3.1. MVC

3.2.3.1.1. Apache Struts

3.2.3.1.2. Spring MVC

3.2.3.1.3. Java Server Faces

3.2.3.1.4. GWT

3.3. JVM

3.3.1. Compilers

3.3.1.1. Sun javac

3.3.1.2. IBM

3.3.1.2.1. Jikes

3.3.1.2.2. ECJ (Eclipse Compiler for Java)

3.3.1.3. GCJ

3.3.1.4. non-bytecode compilers

3.3.1.4.1. GWT Java to JavaScript compiler

3.3.2. Byte Code

3.3.2.1. Code Generation

3.3.2.1.1. JavaCC

3.3.2.1.2. AntLR

3.3.2.1.3. Byacc/J

3.3.3. Garbage Collection

3.3.3.1. PhantomReference

3.3.3.2. SoftReference

3.3.3.3. WeakReference

3.3.3.4. Generational GC

3.3.3.4.1. G1

3.3.4. Alternate Languages

3.3.4.1. Based on Other Languages

3.3.4.1.1. JRuby

3.3.4.1.2. Jython

3.3.4.1.3. lisps

3.3.4.1.4. Rhino

3.3.4.1.5. Fortress

3.3.4.2. Written for JVM

3.3.4.2.1. Clojure

3.3.4.2.2. Scala

3.3.4.2.3. Groovy

3.3.4.2.4. Ioke

3.3.4.2.5. Beanshell

3.3.4.2.6. JavaFX

3.3.4.3. Extensions

3.3.4.3.1. AspectJ

3.3.4.4. Almost Java but not quite

3.3.4.4.1. J++

3.3.4.4.2. GAE/J

3.3.4.4.3. Dalvik/Android

3.3.5. JIT Compilation

3.3.6. Platforms

3.3.6.1. J2ME / Mobile

3.3.6.2. J2SE

3.3.6.2.1. Windows

3.3.6.2.2. UNIX / Linux

3.3.6.2.3. MacOS

3.3.6.3. J2EE

3.3.7. Implementation

3.3.7.1. HotSpot

3.3.7.2. J9 IBM JVM

3.3.7.3. Microsoft VM (dead)

3.3.7.4. JRockit

3.3.7.5. Harmony

3.3.7.6. JAM VM

4. Concepts

4.1. Modularity

4.1.1. OSGi

4.1.1.1. Implementations

4.1.1.1.1. Equinox

4.1.1.1.2. Felix

4.1.1.1.3. Knopflerfish

4.1.1.2. Component Models

4.1.1.2.1. Blueprint Container

4.1.1.2.2. Declarative Services

4.1.1.2.3. iPOJO

4.1.2. Jigsaw

4.1.3. JSR 294

4.1.3.1. Superpackages

4.1.3.2. Module keyword

4.1.3.3. SimpleModuleSystem

5. Notes

5.1. Useful websites

5.1.1. java.sun.com

5.1.2. mindprod.com/jgloss/jgloss.html

5.2. Limitations of language

5.2.1. Multiple inheritance

5.2.2. Closures

5.2.3. Return multiple values

5.2.4. Continuations

5.2.5. No pass-by-reference

5.2.6. First-class method

5.2.7. Generic type erasure

5.3. Alternatives/competitors

5.3.1. Python

5.3.2. .Net

5.3.3. C/C++

5.3.4. Ruby

5.3.5. Objective C

5.3.6. Erlang

6. SQLJ

7. Java Constituents

7.1. Language

7.1.1. syntax, marker interfaces, philosophy, style

7.1.2. Annotations

7.1.3. Primitive types

7.1.3.1. Inboxing/Outboxing

7.1.4. Exceptions

7.1.4.1. Throwable marker

7.1.4.2. throws / throw

7.1.4.3. try / catch / finally

7.1.5. Comments

7.1.6. JNI

7.1.7. Methods

7.1.7.1. Return

7.1.7.1.1. Primitive Types

7.1.7.1.2. Custome Types / Objects

7.1.7.2. Parameters

7.1.7.2.1. Primitive Types

7.1.7.2.2. Custom Types / Objects

7.1.7.3. Member/Overloading/Overriding Methods

7.1.8. Modifiers

7.1.8.1. Concurrency

7.1.8.1.1. synchronized

7.1.8.1.2. volatile

7.1.8.2. Access modifiers

7.1.8.2.1. Public

7.1.8.2.2. Protected

7.1.8.2.3. Package view / Default

7.1.8.2.4. Private

7.1.8.3. native

7.1.8.4. transient

7.1.8.5. final

7.2. utility

7.2.1. Compression

7.2.2. logging

7.2.2.1. Log4J

7.2.2.2. Commons

7.2.2.3. SLF4J

7.2.2.4. Logback

7.2.3. Preferences

7.2.4. regular Expressions

7.3. networking

7.3.1. RMI

7.3.2. Web Services

7.3.3. CORBA

7.3.4. Sockets

7.4. Core

7.4.1. Maths

7.4.1.1. StrictMath

7.4.2. IO

7.4.2.1. Input

7.4.2.1.1. Readers

7.4.2.1.2. Streams

7.4.2.2. Output

7.4.2.2.1. Writers

7.4.2.2.2. Streams

7.4.3. Collections

7.4.3.1. Collection

7.4.3.1.1. Set

7.4.3.1.2. List

7.4.3.1.3. Queue

7.4.3.2. Map

7.4.3.2.1. SortedMap

7.4.3.2.2. HashMap

7.4.3.3. Old

7.4.3.3.1. Vector

7.4.3.3.2. Hashtable

7.4.3.4. Iterators

7.4.3.5. Algorithms

7.4.3.5.1. Comparator interface

7.4.4. Embedded Databases

7.4.4.1. Berkeley DB Java Edition

7.4.4.2. HSQL

7.4.4.3. Apache Derby

7.4.5. Concurrency

7.4.5.1. Thread class

7.4.5.2. Runnable interface

7.4.5.3. Locks

7.4.5.3.1. Read/Write locks

7.4.5.3.2. ReentrantLock

7.4.5.4. Atomic operations

7.4.5.5. Atomic objects

7.4.5.5.1. AtomicInteger

7.4.5.5.2. AtomicLong

7.4.5.5.3. AtomicReference

7.4.5.6. Task execution

7.4.5.6.1. ExecutorService interface

7.4.5.6.2. Callable<T> interface

7.4.5.6.3. Future<T>

7.4.5.7. Concurrent containers

7.4.5.7.1. ConcurrentMap

7.4.5.7.2. ConcurrentLinkedQueue

7.4.5.7.3. ArrayBlockingQueue

7.4.5.7.4. LinkedBlockingQueue

7.4.5.8. Synchronization utilities

7.4.5.8.1. CyclicBarrier

7.4.5.8.2. CountDownLatch

7.4.5.8.3. Exchanger

7.4.6. Exceptions

7.4.6.1. Unchecked

7.4.6.1.1. RuntimeException

7.4.6.1.2. Error

7.4.6.2. Checked

7.4.6.2.1. IOException

7.4.6.2.2. SQLException

7.4.7. Object

7.4.7.1. equals

7.4.7.2. hashCode

7.4.7.3. wait / notify / notifyAll

7.4.8. JavaBeans

7.4.9. Reflection

7.4.10. Serialization

7.4.11. Class

7.4.11.1. Classloaders

7.5. JavaDoc

7.5.1. Doclets

7.6. Tools

7.6.1. IDE

7.6.1.1. IntelliJ IDEA

7.6.1.2. Eclipse

7.6.1.2.1. MyEclipse

7.6.1.3. editors

7.6.1.3.1. emacs

7.6.1.3.2. vi

7.6.1.4. NetBeans

7.6.2. Profiling tools

7.6.2.1. JProfiler

7.6.2.2. VisualVM

7.6.2.3. jhat

7.6.3. Build Tools

7.6.3.1. Ant

7.6.3.2. Maven

7.6.3.2.1. Surefire

7.6.3.3. Gradle

7.6.3.4. Gant

7.6.3.5. Continuous Integration

7.6.3.5.1. Hudson

7.6.4. That come with the JDK

7.6.4.1. jar

7.6.4.2. javac

7.6.4.3. jhat

7.6.4.4. jdb

7.6.4.5. policytool

7.6.4.6. rmic

7.6.4.7. idlj

7.6.4.8. javah

7.6.4.9. javap

7.6.4.10. appletviewer

7.6.5. Debuggers

7.6.6. Testing

7.6.6.1. Checkstyle

7.6.6.2. PMD

7.6.7. Disassemblers

7.6.7.1. JAD

8. Types of programming

8.1. Server side / SOA / J2EE

8.1.1. persistence

8.1.1.1. Relational

8.1.1.1.1. JDBC

8.1.1.2. Object Based

8.1.1.2.1. JDO

8.1.1.2.2. CMP

8.1.1.2.3. JPA

8.1.1.3. XML

8.1.1.3.1. XStream

8.1.2. EJB

8.1.2.1. EJB 2.0

8.1.2.2. EJB 3.0

8.1.2.3. Types

8.1.2.3.1. Session

8.1.2.3.2. Entity

8.1.2.3.3. Message-driven

8.1.3. Application servers

8.1.3.1. JBoss

8.1.3.2. WebLogic

8.1.3.3. SAP NetWeaver

8.1.3.4. Glassfish

8.1.3.5. WebSphere

8.1.4. Naming

8.1.4.1. JNDI

8.1.4.2. LDAP

8.1.5. Web Services

8.1.5.1. SOA

8.1.5.2. ReST

8.1.5.3. XML/RPC

8.1.5.4. SOAP

8.1.5.5. WS-*

8.1.6. JMS

8.1.6.1. MQSeries

8.1.6.2. Tibco EMS

8.1.6.3. ActiveMQ

8.1.7. Java-based Servers

8.1.7.1. Database

8.1.7.1.1. HSQL

8.1.7.1.2. Apache Derby

8.1.7.2. Servlet containers

8.1.7.2.1. Apache Tomcat

8.1.7.2.2. Jetty

8.1.7.2.3. servletrunner (obsolete)

8.1.7.3. E-Mail

8.1.7.3.1. Apache James

8.1.7.4. FTP

8.1.7.4.1. Colorado

8.2. GUI / Client Side

8.2.1. Thick Client

8.2.1.1. Swing

8.2.1.1.1. PLAF

8.2.1.2. AWT

8.2.1.3. SWT

8.2.1.3.1. Eclipse RCP

8.2.2. Win/Form

8.2.2.1. Button

8.2.2.2. Text Fields

8.2.2.2.1. Single Line Text Field

8.2.2.2.2. Multiple Line Text Field

8.2.2.2.3. Dropdown Field

8.2.2.3. Lablel

8.2.3. Client types

8.2.3.1. Desktop

8.2.3.1.1. WebStart

8.2.3.1.2. Applet

8.2.3.2. HTML-based

8.2.3.2.1. servlet