1. values
    1. background
      1. classes can not be changed if it was loaded into container(jvm)
      2. 新增/修改方法的时候,产生一个新的类,并且关联到那个holder上去,从调用的层面上来看,就实现了“动态”改变一个类的行为
        1. weakness
          1. performance lots of memory
          2. origin Java SDK classes can not use this
          3. 如果使用java的反射机制,这种机制和原来的类结构是完全不一样的,现在越来越多的类库或者框架都很依赖反射的,这是一个大的问题。
  2. env
    1. export JAVA_OPTS="-Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true" export JREBEL_HOME=/Applications/ZeroTurnaround/JRebel export MAVEN_OPTS="$JAVA_OPTS -noverify -javaagent:$JREBEL_HOME/jrebel.jar"
    2. /etc/launchd.conf setenv M2_HOME /usr/share/apache-maven-3.0.3
  3. config
    1. for jetty
      1. <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> </configuration> </plugin>
      2. other config may make jetty compile and deployed auto
  4. different between hot swap
    1. ToDo:java.lang.instrument
    2. hot swap
      1. HotSwap允许将JVM中的类定义替换为新的类定义,这就允许开发人员在debug时,将修改过的class替换JVM中旧有的class,无需重新启动服务器。不过,目前HotSwap只支持对方法body的修改,不支持对类和方法签名的修改(比如修改类名,方法名,方法参数等)
    3. http://zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/
  5. Working with ds
    1. set project path use module compile output path
    2. consumer-search/core/ds/bin
    3. run gradle reaMakeDev to generate rebel,xml