TAJO-2057: Remove redundant class loading in plan optimizer.

Closes #943
diff --git a/CHANGES b/CHANGES
index 39b78d2..51bfa62 100644
--- a/CHANGES
+++ b/CHANGES
@@ -8,6 +8,8 @@
 
   IMPROVEMENT
 
+    TAJO-2057: Remove redundant class loading in plan optimizer. (jinho)
+
     TAJO-2032: Change tajo.rest.service.port to be the general style in TAJO.
     (Byunghwa Yun via jihoon)
 
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
index a8a3ff3..4d742c7 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
@@ -35,9 +35,9 @@
 public class EvalTreeOptimizer {
   private static final Log LOG = LogFactory.getLog(EvalTreeOptimizer.class);
 
-  private List<EvalTreeOptimizationRule> rules = Lists.newArrayList();
+  private static List<EvalTreeOptimizationRule> rules = Lists.newArrayList();
 
-  public EvalTreeOptimizer() {
+  static {
     Set<Class> functionClasses = ClassUtil.findClasses(EvalTreeOptimizationRule.class,
         EvalTreeOptimizationRule.class.getPackage().getName() + ".rules");
 
@@ -66,6 +66,9 @@
     });
   }
 
+  public EvalTreeOptimizer() {
+  }
+
   public EvalNode optimize(LogicalPlanner.PlanContext context, EvalNode node) {
     Preconditions.checkNotNull(node);
 
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
index f02faef..93ba8ea 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
@@ -42,7 +42,7 @@
   }
 
   /** class logger */
-  private Log LOG = LogFactory.getLog(BaseLogicalPlanPreprocessEngine.class);
+  private static Log LOG = LogFactory.getLog(BaseLogicalPlanPreprocessEngine.class);
 
   /** a map for pre-process phases */
   private Map<String, LogicalPlanPreprocessPhase> preprocessPhases = new LinkedHashMap<>();
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
index 80805d8..2259b34 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
@@ -18,16 +18,21 @@
 
 package org.apache.tajo.plan.rewrite;
 
-import java.util.ArrayList;
+import com.google.common.collect.Lists;
+
 import java.util.Collection;
 import java.util.List;
 
 public class BaseLogicalPlanPreprocessPhaseProvider extends LogicalPlanPreprocessPhaseProvider {
-  @Override
-  public Collection<Class<? extends LogicalPlanPreprocessPhase>> getPhases() {
-    List phases = new ArrayList<>();
+  private static List<Class<? extends LogicalPlanPreprocessPhase>> phases = Lists.newArrayList();
+
+  static {
     phases.add(BaseSchemaBuildPhase.class);
     phases.add(SelfDescSchemaBuildPhase.class);
+  }
+
+  @Override
+  public Collection<Class<? extends LogicalPlanPreprocessPhase>> getPhases() {
     return phases;
   }
 }
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
index 21a0905..fda15ee 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
@@ -34,7 +34,7 @@
  */
 public class BaseLogicalPlanRewriteEngine implements LogicalPlanRewriteEngine {
   /** class logger */
-  private Log LOG = LogFactory.getLog(BaseLogicalPlanRewriteEngine.class);
+  private static Log LOG = LogFactory.getLog(BaseLogicalPlanRewriteEngine.class);
 
   private final StorageService storage;