diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java b/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
index ef32df3..e3ed6b2 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
@@ -16,28 +16,7 @@ package ch.qos.logback.classic;
 import java.util.HashMap;
 import java.util.Map;
 
-import ch.qos.logback.classic.joran.action.ContextNameAction;
-import ch.qos.logback.classic.pattern.CallerDataConverter;
-import ch.qos.logback.classic.pattern.ClassOfCallerConverter;
-import ch.qos.logback.classic.pattern.ContextNameConverter;
-import ch.qos.logback.classic.pattern.PropertyConverter;
-import ch.qos.logback.classic.pattern.DateConverter;
 import ch.qos.logback.classic.pattern.EnsureExceptionHandling;
-import ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter;
-import ch.qos.logback.classic.pattern.FileOfCallerConverter;
-import ch.qos.logback.classic.pattern.LevelConverter;
-import ch.qos.logback.classic.pattern.LineOfCallerConverter;
-import ch.qos.logback.classic.pattern.LineSeparatorConverter;
-import ch.qos.logback.classic.pattern.LoggerConverter;
-import ch.qos.logback.classic.pattern.MDCConverter;
-import ch.qos.logback.classic.pattern.MarkerConverter;
-import ch.qos.logback.classic.pattern.MessageConverter;
-import ch.qos.logback.classic.pattern.MethodOfCallerConverter;
-import ch.qos.logback.classic.pattern.NopThrowableInformationConverter;
-import ch.qos.logback.classic.pattern.RelativeTimeConverter;
-import ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter;
-import ch.qos.logback.classic.pattern.ThreadConverter;
-import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
@@ -57,78 +36,78 @@ import ch.qos.logback.core.pattern.parser.Parser;
 
 public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {
 
-  public static final Map<String, String> defaultConverterMap = new HashMap<String, String>();
+  public static final Map<String, String> defaultConverterMap = new HashMap<String, String>(100);
 
+  /*
+   * Do not use XXX.class.getName(), as this forces the class to be loaded at runtime,
+   * which makes the class load time for PatternLayout very expensive.
+   * This does not really matter for long running processes, but is
+   * significant for short lived processes.
+   */
   static {
     defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);
 
-    defaultConverterMap.put("d", DateConverter.class.getName());
-    defaultConverterMap.put("date", DateConverter.class.getName());
+    defaultConverterMap.put("d", "ch.qos.logback.classic.pattern.DateConverter");
+    defaultConverterMap.put("date", "ch.qos.logback.classic.pattern.DateConverter");
 
-    defaultConverterMap.put("r", RelativeTimeConverter.class.getName());
-    defaultConverterMap.put("relative", RelativeTimeConverter.class.getName());
+    defaultConverterMap.put("r", "ch.qos.logback.classic.pattern.RelativeTimeConverter");
+    defaultConverterMap.put("relative", "ch.qos.logback.classic.pattern.RelativeTimeConverter");
 
-    defaultConverterMap.put("level", LevelConverter.class.getName());
-    defaultConverterMap.put("le", LevelConverter.class.getName());
-    defaultConverterMap.put("p", LevelConverter.class.getName());
+    defaultConverterMap.put("level", "ch.qos.logback.classic.pattern.LevelConverter");
+    defaultConverterMap.put("le", "ch.qos.logback.classic.pattern.LevelConverter");
+    defaultConverterMap.put("p", "ch.qos.logback.classic.pattern.LevelConverter");
 
-    defaultConverterMap.put("t", ThreadConverter.class.getName());
-    defaultConverterMap.put("thread", ThreadConverter.class.getName());
+    defaultConverterMap.put("t", "ch.qos.logback.classic.pattern.ThreadConverter");
+    defaultConverterMap.put("thread", "ch.qos.logback.classic.pattern.ThreadConverter");
 
-    defaultConverterMap.put("lo", LoggerConverter.class.getName());
-    defaultConverterMap.put("logger", LoggerConverter.class.getName());
-    defaultConverterMap.put("c", LoggerConverter.class.getName());
+    defaultConverterMap.put("lo", "ch.qos.logback.classic.pattern.LoggerConverter");
+    defaultConverterMap.put("logger", "ch.qos.logback.classic.pattern.LoggerConverter");
+    defaultConverterMap.put("c", "ch.qos.logback.classic.pattern.LoggerConverter");
 
-    defaultConverterMap.put("m", MessageConverter.class.getName());
-    defaultConverterMap.put("msg", MessageConverter.class.getName());
-    defaultConverterMap.put("message", MessageConverter.class.getName());
+    defaultConverterMap.put("m", "ch.qos.logback.classic.pattern.MessageConverter");
+    defaultConverterMap.put("msg", "ch.qos.logback.classic.pattern.MessageConverter");
+    defaultConverterMap.put("message", "ch.qos.logback.classic.pattern.MessageConverter");
 
-    defaultConverterMap.put("C", ClassOfCallerConverter.class.getName());
-    defaultConverterMap.put("class", ClassOfCallerConverter.class.getName());
+    defaultConverterMap.put("C", "ch.qos.logback.classic.pattern.ClassOfCallerConverter");
+    defaultConverterMap.put("class", "ch.qos.logback.classic.pattern.ClassOfCallerConverter");
 
-    defaultConverterMap.put("M", MethodOfCallerConverter.class.getName());
-    defaultConverterMap.put("method", MethodOfCallerConverter.class.getName());
+    defaultConverterMap.put("M", "ch.qos.logback.classic.pattern.MethodOfCallerConverter");
+    defaultConverterMap.put("method", "ch.qos.logback.classic.pattern.MethodOfCallerConverter");
 
-    defaultConverterMap.put("L", LineOfCallerConverter.class.getName());
-    defaultConverterMap.put("line", LineOfCallerConverter.class.getName());
+    defaultConverterMap.put("L", "ch.qos.logback.classic.pattern.LineOfCallerConverter");
+    defaultConverterMap.put("line", "ch.qos.logback.classic.pattern.LineOfCallerConverter");
 
-    defaultConverterMap.put("F", FileOfCallerConverter.class.getName());
-    defaultConverterMap.put("file", FileOfCallerConverter.class.getName());
+    defaultConverterMap.put("F", "ch.qos.logback.classic.pattern.FileOfCallerConverter");
+    defaultConverterMap.put("file", "ch.qos.logback.classic.pattern.FileOfCallerConverter");
 
-    defaultConverterMap.put("X", MDCConverter.class.getName());
-    defaultConverterMap.put("mdc", MDCConverter.class.getName());
+    defaultConverterMap.put("X", "ch.qos.logback.classic.pattern.MDCConverter");
+    defaultConverterMap.put("mdc", "ch.qos.logback.classic.pattern.MDCConverter");
 
-    defaultConverterMap.put("ex", ThrowableProxyConverter.class.getName());
-    defaultConverterMap.put("exception", ThrowableProxyConverter.class
-        .getName());
-    defaultConverterMap.put("rEx", RootCauseFirstThrowableProxyConverter.class.getName());
-    defaultConverterMap.put("rootException", RootCauseFirstThrowableProxyConverter.class
-        .getName());
-    defaultConverterMap.put("throwable", ThrowableProxyConverter.class
-        .getName());
+    defaultConverterMap.put("ex", "ch.qos.logback.classic.pattern.ThrowableProxyConverter");
+    defaultConverterMap.put("exception", "ch.qos.logback.classic.pattern.ThrowableProxyConverter.class");
+    defaultConverterMap.put("rEx", "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter");
+    defaultConverterMap.put("rootException", "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter");
+    defaultConverterMap.put("throwable", "ch.qos.logback.classic.pattern.ThrowableProxyConverter");
 
-    defaultConverterMap.put("xEx", ExtendedThrowableProxyConverter.class.getName());
-    defaultConverterMap.put("xException", ExtendedThrowableProxyConverter.class
-        .getName());
-    defaultConverterMap.put("xThrowable", ExtendedThrowableProxyConverter.class
-        .getName());
+    defaultConverterMap.put("xEx", "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter");
+    defaultConverterMap.put("xException", "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter");
+    defaultConverterMap.put("xThrowable", "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter");
 
-    defaultConverterMap.put("nopex", NopThrowableInformationConverter.class
-        .getName());
+    defaultConverterMap.put("nopex", "ch.qos.logback.classic.pattern.NopThrowableInformationConverter");
     defaultConverterMap.put("nopexception",
-        NopThrowableInformationConverter.class.getName());
+        "ch.qos.logback.classic.pattern.NopThrowableInformationConverter");
 
-    defaultConverterMap.put("cn", ContextNameAction.class.getName());
-    defaultConverterMap.put("contextName", ContextNameConverter.class.getName());
+    defaultConverterMap.put("cn", "ch.qos.logback.classic.joran.action.ContextNameAction");
+    defaultConverterMap.put("contextName", "ch.qos.logback.classic.pattern.ContextNameConverter");
     
-    defaultConverterMap.put("caller", CallerDataConverter.class.getName());
+    defaultConverterMap.put("caller", "ch.qos.logback.classic.pattern.CallerDataConverter");
 
-    defaultConverterMap.put("marker", MarkerConverter.class.getName());
+    defaultConverterMap.put("marker", "ch.qos.logback.classic.pattern.MarkerConverter");
 
-    defaultConverterMap.put("property", PropertyConverter.class.getName());
+    defaultConverterMap.put("property", "ch.qos.logback.classic.pattern.PropertyConverter");
 
     
-    defaultConverterMap.put("n", LineSeparatorConverter.class.getName());
+    defaultConverterMap.put("n", "ch.qos.logback.classic.pattern.LineSeparatorConverter");
   }
 
   public PatternLayout() {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
index 985f719..7fcc18f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
@@ -20,8 +20,6 @@ import java.util.Map;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.pattern.Converter;
 import ch.qos.logback.core.pattern.FormatInfo;
-import ch.qos.logback.core.pattern.IdentityCompositeConverter;
-import ch.qos.logback.core.pattern.ReplacingCompositeConverter;
 import ch.qos.logback.core.pattern.util.IEscapeUtil;
 import ch.qos.logback.core.pattern.util.RegularEscapeUtil;
 import ch.qos.logback.core.spi.ContextAwareBase;
@@ -49,9 +47,9 @@ public class Parser<E> extends ContextAwareBase {
   public final static String REPLACE_CONVERTER_WORD = "replace";
   static {
     DEFAULT_COMPOSITE_CONVERTER_MAP.put(Token.BARE_COMPOSITE_KEYWORD_TOKEN.getValue().toString(),
-            IdentityCompositeConverter.class.getName());
+            "ch.qos.logback.core.pattern.IdentityCompositeConverter");
     DEFAULT_COMPOSITE_CONVERTER_MAP.put(REPLACE_CONVERTER_WORD,
-             ReplacingCompositeConverter.class.getName());
+             "ch.qos.logback.core.pattern.ReplacingCompositeConverter");
   }
 
   final List tokenList;
