diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/api/JobBootstrap.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/api/JobBootstrap.java
index 6cf3921..cf09778 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/api/JobBootstrap.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/api/JobBootstrap.java
@@ -24,18 +24,13 @@
 import org.apache.mesos.Protos;
 
 /**
- * 云作业启动器.
- * 
- * <p>需将应用打包, 并在main方法中直接调用Bootstrap.execute方法</p>
- *
- * @author caohao
- * @author zhangliang
+ * Job bootstrap.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class JobBootstrap {
     
     /**
-     * 执行作业.
+     * Execute.
      */
     public static void execute() {
         MesosExecutorDriver driver = new MesosExecutorDriver(new TaskExecutor());
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/CloudJobFacade.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/CloudJobFacade.java
index 5c82d3c..95bafe3 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/CloudJobFacade.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/CloudJobFacade.java
@@ -29,9 +29,7 @@
 import java.util.Collection;
 
 /**
- * 为调度器提供内部服务的门面类.
- * 
- * @author zhangliang
+ * Cloud job facade.
  */
 @RequiredArgsConstructor
 public final class CloudJobFacade implements JobFacade {
@@ -65,7 +63,7 @@
 
     /**
      * Get sharding contexts.
-     * @return ShardingContexts
+     * @return sharding contexts
      */
     public ShardingContexts getShardingContexts() {
         return shardingContexts;
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/DaemonTaskScheduler.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/DaemonTaskScheduler.java
index e95df67..bf40b56 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/DaemonTaskScheduler.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/DaemonTaskScheduler.java
@@ -41,10 +41,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * 常驻作业调度器.
- * 
- * @author zhangliang
- * @author caohao
+ * Daemon task scheduler.
  */
 @RequiredArgsConstructor
 public final class DaemonTaskScheduler {
@@ -70,7 +67,7 @@
     private final Protos.TaskID taskId;
     
     /**
-     * 初始化作业.
+     * Init the job.
      */
     public void init() {
         JobDetail jobDetail = JobBuilder.newJob(DaemonJob.class).withIdentity(jobRootConfig.getTypeConfig().getCoreConfig().getJobName()).build();
@@ -121,9 +118,9 @@
     }
     
     /**
-     * 停止任务调度.
-     * 
-     * @param taskID 任务主键
+     * Shutdown scheduling the task.
+     *
+     * @param taskID task id
      */
     public static void shutdown(final Protos.TaskID taskID) {
         Scheduler scheduler = RUNNING_SCHEDULERS.remove(taskID.getValue());
@@ -137,9 +134,7 @@
     }
     
     /**
-     * 常驻作业.
-     * 
-     * @author zhangliang
+     * Daemon job.
      */
     public static final class DaemonJob implements Job {
         
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/JobConfigurationContext.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/JobConfigurationContext.java
index 07679f4..4c8d37c 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/JobConfigurationContext.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/JobConfigurationContext.java
@@ -32,9 +32,7 @@
 import java.util.Map;
 
 /**
- * 内部的作业配置上下文.
- *
- * @author caohao
+ * Job configuration context.
  */
 public final class JobConfigurationContext implements JobRootConfiguration {
     
@@ -72,9 +70,9 @@
     }
     
     /**
-     * 判断是否为瞬时作业.
-     * 
-     * @return 是否为瞬时作业
+     * Whether is transient job.
+     *
+     * @return true is transient job, otherwise not
      */
     public boolean isTransient() {
         return IGNORE_CRON.equals(jobTypeConfig.getCoreConfig().getCron());
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/TaskExecutor.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/TaskExecutor.java
index 71e6209..69f6b3e 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/TaskExecutor.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/TaskExecutor.java
@@ -40,9 +40,7 @@
 import java.util.concurrent.ExecutorService;
 
 /**
- * 作业任务执行器.
- *
- * @author zhangliang
+ * Task executor.
  */
 @Slf4j
 public final class TaskExecutor implements Executor {
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalCloudJobConfiguration.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalCloudJobConfiguration.java
index 88ea65c..d981790 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalCloudJobConfiguration.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalCloudJobConfiguration.java
@@ -24,9 +24,7 @@
 import lombok.RequiredArgsConstructor;
 
 /**
- * 本地云作业配置.
- * 
- * @author gaohongtao
+ * Local cloud job configuration.
  */
 @RequiredArgsConstructor
 @AllArgsConstructor
@@ -42,9 +40,9 @@
     private String applicationContext;
     
     /**
-     * 获取作业名称.
-     * 
-     * @return 作业名称
+     * Get job name.
+     *
+     * @return the job name
      */
     public String getJobName() {
         return typeConfig.getCoreConfig().getJobName();
diff --git a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalTaskExecutor.java b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalTaskExecutor.java
index 4412644..041730c 100644
--- a/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalTaskExecutor.java
+++ b/elastic-job-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/local/LocalTaskExecutor.java
@@ -43,10 +43,7 @@
 import java.util.Map;
 
 /**
- * 本地作业执行器.
- * 
- * @author gaohongtao
- * @author zhangliang
+ * Task executor.
  */
 @RequiredArgsConstructor
 public final class LocalTaskExecutor {
@@ -54,7 +51,7 @@
     private final LocalCloudJobConfiguration localCloudJobConfiguration;
     
     /**
-     * 本地执行作业.
+     * Execute job.
      */
     @SuppressWarnings("unchecked")
     public void execute() {
