SlideShare a Scribd company logo
1 of 74
SoftLeader Tech. Corp.
李日貴 jini
王文農 steven
Java 熱門 Framework 運用與比較
About us..
• Demo codes
http://code.google.com/p/javatwo2012-java-framework-comparison/

• My facebook page
https://www.facebook.com/EnterpriseJava

• Javaworld@Tw ( javaworld.com.tw )
jini

atpqq
JavaEE Multi-Tiers architecture



HttpServletRequest


                     Web    Business   DAO    DB
                     Tier     Tier     Tier

HttpServletResponse
Lots of frameworks
Java Persistence
    ( DAO )
JPA 2
• 簡化 JDBC
• Native SQL
• 設定容易
• XML or Annotation
Customer.java

public class Customer {

    private Long id;

    private String name;

    private Integer age;

    // getters and setters

}
Customer-mapper.xml

<mapper
namespace=“javatwo2012.dao.mybatis.Customer”>

 <select id=“getCustomerById”
parameterType=“Long” resultType=“customer”>

   <!-- select SQL with #id -->

 </select>

</mapper>
mybatis-config.xml

<configuration>

 <settings> … </settings>

 <mappers>

    <mapper
resource=“javatwo2012/dao/mybatis/Customer-
mapper.xml”/>

 </mappers>

</configuration>
CustomerDao.java

SqlSession session =
sqlSessionFactory.openSession();

try {

  Customer customer =
session.selectOne(“javatwo2012.dao.mybatis.Cust
omer.getCustomerById”, new Long(101));

} finally {

    session.close();

}
• 完整 ORM
• 易於更換資料庫
• 多種查詢機制
• 支援多種 Cache
• 多元的資料 Initialize
Customer.java

@Entity

@Table(name=“CUSTOMER”)

public class Customer {

    @Id

    @GeneratedValue(strategy=GenerationType.Identity)

    @Column(name=“ID”)

    private Long id;

    // getters and setters

}
hibernate-cfg.xml

<hibernate-configuration>

  <session-factory>

  <property name=“dialect”>DB_Dialect</property>

  <mapping class=“javatwo2012.dao.hibernate.Customer”/>

  </seesion-factory>

</hibernate-configuration>
CustomerDao.java

public Customer findById(Long id) {

 SessionFactory sessionFactory = new
Configuration().configure().buildSessionFactory();

    Session session = sessionFactory.openSession();

    Criteria crit = session.createCriteria(Customer.class);

    crit.add(Restrictions.idEq(id));

    return (Customer) crit.uniqueResult();

}
• JavaEE 標準
        • 吸收了各家的優點
JPA 2   • 多種查詢機制
        • 支援多種 Cache
        • 多元的資料 Initialize
        • Transaction Control
Customer.java

        @Entity

        @Table(name=“CUSTOMER”)

        public class Customer {
JPA 2
            @Id

            @GeneratedValue(strategy=GenerationType.Identity)

            @Column(name=“ID”)

            private Long id;

            // getters and setters

        }
persistence.xml

        <persistence>

          <persistence-unit name=“javatwo2012demo” transaction-
        type=“RESOURCE_LOCAL” >

JPA 2      <provider>org.hibernate.ejb.HibernatePersistence</provider>

           <properties>..</properties>

         </persistence-unit>

        </persistence>
CustomerDao.java

        public Customer findById(Long id) {

         EntityManagerFactory emFactory =
        Persistence.createEntityManagerFactory(“javatwo2012demo”);

JPA 2       EntityManager manager = emFactory.createEntityManager();

            return (Customer) manager.find(Customer.class, id);

        }
項目
                       JPA 2
  學習容易度     容易    複雜    複雜

  查詢 API    少     多     多

 SQL優化容易度   較簡單   複雜    複雜

資料庫方言依賴程度   高     低     低

   效能       佳     佳    依實作而定

  可移植性      普通    佳    依實作而定

  社群支援      多     多     多
Java Web
 ( MVC )
• Annotation Driven
• AJAX inside
• UnitTest
• REST Integration
• Multi-Languages
• HTML5 + CSS3
• Action-Based   • Component-Based




                        JSF 2
web.xml

<filter-class>

org.apache.struts2.dispatcher.ng.StrutsPrepareAndExecu
teFilter

</filter-class>
struts.xml

<struts>

 <package name=“javatwo2012” extends=“struts-default”>

 <action name=“hello” class=“…HelloAction”>

      <result>/hello.jsp</result>

      <result name=“input”>/hello.jsp</result>

 </action>

 </package>

</struts>
HelloAction.java

public class HelloAction extends ActionSupport {

    private String message;

    public String getMessage() { return this.message; }

    public String execute() {

        return SUCCESS;

    }

}
hello.jsp

<%@ taglib prefix=“s” uri=“/sturts-tags”%>

<s:property value=“message”/>
AuthAction.java

public class AuthAction extends ActionSupport {

    public String validate() {

        if( … ) {

            addFieldError(“account”, “Account can’t be empty”);

        }

    }

    public String execute() {    …. }

}
• 優點
– 很多人用, 工作機會多
– 豐富的 Taglibs
– 很多擴充的 plugins
• 缺點
– struts.xml
– 需要用 result 對應
– Source-Codes 混亂
web.xml

<filter-class>

net.sourceforge.stripes.controller.StripesFilter

</filter-class>



<servlet-class>

net.sourceforge.stripes.controller.DispatcherServlet

</servlet-class>
HelloActionBean.java

public class HelloActionBean implements ActionBean {

    private ActionBeanContext context;

    pirvate String message;

    @DefaultHandler

    public Resolution init() {

         message = “Hello Stripes !”

         return new ForwardResolution(“/hello.jsp”);

    }

}
hello.jsp

${actionBean.message}
AuthActionBean.java

@Validate(required=true)

private String account;

@Validate(required=true, minlength=4, maxlength=6)

private String password;
login.jsp

<%@taglib prefix=“stripes”
uri=“http://stripes.sourceforge.net/stripes.tld” %>

<stripes:errors/>

<stripes:form action=“/Auth.action” focus=“account”>

 <stripes:text id=“account” name=“account”/>

 <stripes:password id=“password” name=“password”/>

 <stripes:submit name=“login” value=“LOGIN”/>

</stripes:form>
• 優點
 – 利用 ActionContext 處理
   HttpServletRequest
 – 使用 Resolution 作為 forward /
   redirect 物件
 – 在 JSPs 中直接使用
   ${actionBean.obj}
• 缺點
 – 很少人使用
 – 開發週期長
  – V1.5.6(2011-03-14), v1.5.7(2012-05-18)
web.xml

<servlet>

 <servlet-name>spring</servlet-name>

 <servlet-class>

    org.springframework.web.servlet.DispatcherServlet

 </servlet-class>

</sevlet>



/WEB-INF/spring-servlet.xml
spring-servlet.xml

<beans …>

 <context:component-scan base-package=“javatwo2012.mvc”/>

 <bean
class=“org.springframework.web.servlet.view.InternalResourceViewResolver
”>

     <property name=“prefix” value=“/WEB-INF/jsp/”/>

     <property name=“suffix” value=“.jsp”/>

  </bean>

</beans>
HelloController.java

@Controller

public class HelloController {

    @RequestMapping(“/hello”)

    public String hello(ModelMap model) {

         model.addAttribute(“message”, “Hello SpringMVC !”);

         return “hello”;

     }

}
LoginForm.java

public class LoginForm {

    @NotEmpty

    private String account;

    @NotEmpty

    @Size(min=4, max=6)

    private String password;

}
AuthController.java

@Controller

public class AuthController {

    @RequestMapping(“/auth/doLogin”)

   public String hello(@Valid LoginForm loginForm,
BindingResult result) {

         if( result.hasErrors() ) return “login”;

         //..

     }

}
login.jsp

<%@ taglib prefix=“form”
uri=“http://www.springframework.org/tags/form”%>

<form:form action=“/auth/doLogin” commandName=“loginForm”>

<form:input path=“account”/><form:errors path=“account”/>

<form:password path=“password”/><form:errors
path=“password”/>

<input type=“submit” value=“LOGIN”/>

</form:form>
• 優點
 –   彈性且清晰的框架
 –   View 端可整合多種解決方案
 –   強大的 RESTful 支援
 –   JSR 303 Bean Validation
• 缺點
 – 過於彈性, 規範不易
 – 沒有內建 AJAX
web.xml

<context-param>

<param-name>tapestry.app-package</param-name>

<param-value>javatwo2012.mvc.tapestry.web</param-value>

</context-param>



<filter-name>app</fitler-name>

<filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
javatwo2012.mvc.tapestry.web

• components
  – Layout.java

• pages
  – Hello.java
  – Hello.tml

• services
  – AppModule.java
Login.java

public class Login {

    @Property

    private String account;

    @Property

    private String password;

    public Class<?> onSuccess() {

        return Welcome.class;

    }

}
Login.tml

<html xmlns:t=“…”>

 <t:form t:id=“loginForm”>

 <t:textField t:id=“account” value=“account” validate=“required”/>

  <t:passwordField t:id=“password” value=“password”
validate=“required, minLength=4, maxLength=6”/>

  <t:submit value=“LOGIN”/>

</html>
• 優點
 – 物件開發容易
 – 執行效能卓越
 – 異常報告完整
• 缺點
 – 學習曲線高
 – 使用者較少, 工作數量也不多
web.xml

<filter-class>

org.apache.wicket.protocol.http.WicketFilter

</filter-class>

<init-param>

  <param-name>applicationClassName</param-name>

  <param-value>javatwo2012.mvc.wicket.HelloApp</param-value>

</init-param>
HelloApp.java

public class HelloApp extends WebApplication {

    public Class<? extends Page> getHomePage() {

        return HelloPage.class;

    }

}
HelloPage.java

public class HelloPage extends WebPage {

    public HelloPage() {

        add( new Label(“message”, “Hello Wicket !!”);

    }

}

HelloPage.html

<span wicket:id=“message”> Message on here </span>
• 優點
 – Swing-based UI 動態開發方式
 – 元件可重複使用性高
 – 熱血的社群
• 缺點
 –   學習曲線高
 –   Server-side 所需硬體較高 ( cpu/ram)
 –   效能調校需要長足經驗
 –   使用者較少, 工作數量也不多
web.xml

        <servlet-class>

        Javax.faces.webapp.FacesServlet

        </servlet-class>
JSF 2
HelloBean

        @ManagedBean

        @SessionScoped

        public class HelloBean {
JSF 2       private String message = “Hello JSF 2.0 !”;

            private String getMessage() {

                return message;

            }

        }
hello.xhtml

        <html xmlns:f=“http://java.sun.com/jsf/core”

              xmlns:h=“http://java.sun.com/jsf/html”>

          <h:head><title>JSF 2.0 Hello</title></h:head>
JSF 2     <h:body>

                  #{helloBean.message}

           </h:body>

        </html>
AuthBean

        public class AuthBean {

            public String checkLogin() {

                if(true) {

JSF 2              forward=“login”;

                   return “Login Success”;

                } else { return “Login Failed”; }

            }

            public String doLogin() { return forward; }

        }
login.xhtml

        <form id=“loginForm”>

          <h:inputText id=“account” value=“#{authBean.account}”
        required=“true”/> <h:message for=“account” style=“color:red”/>

JSF 2     <h:inputSecret id=“password” value=“#{authBean.password}”
        required=“true”>

             <f:validateLength minimum=“4” maximum=“6”/>

          </h:inputSecret>

          <h:commandButton id=“loginBtn” value=“LOGIN”
        actionListener=“#{authBean.checkLogin}”
        action=“#{authBean.doLogin}”/>

        </form>
JSF 2
• 優點
         –   JavaEE 標準, 官方支援
         –   具有非常多實作專案
         –   進入門檻低
         –   有視覺化設計的 IDE 介面
JSF 2
        • 缺點
         – 大多元件需要使用 SessionScope 浪
           費 Server-side 資源
         – 大量與繁瑣的 JSPs (xhtml) 開發
hello.gwt.xml

<module>

  <inherits name=“com.google.gwt.user.User” />

  <source path=“client”/>

  <entry-point class=“javatwo2012.mvc.gwt.client.Hello” />

</module>
client/HelloService.java

@RemoteServiceRelativePath(“hello”)

public interface HelloService extends RemoteService {

    public String getMessage();

}

client/HelloServiceAsync.java

public interface HelloServiceAnsyc {

    void getMessage(AsyncCallback<String> callback);

}
client/Hello.java

public class Hello implements EntryPoint {

 private final HelloServiceAsync helloService =
GWT.create(HelloService.class);

    private final Label message = new Label();

    public void onModuleLoad() {

    RootPanel.get().add(message);

    helloService.getMessage(new AsyncCallback<String>() {

          public void onSuccess(String result) { .. }

          public void onFailure(Throwable caught) { … }

    });

}
server/HelloServiceImpl

public class HelloServiceImpl extends RemoteServiceServlet
implements HelloService {

    public String getMessage() {

        return “Hello GWT !”;

    }

}
web.xml

<servlet-class>

Javatwo2012.mvc.gwt.server.HelloServiceImpl

</servlet-class>
hello.jsp

<script type=“text/javascript” language=“javascript”
src=“…/nocache.js”></script>
hello.gwt.xml

<module>

  <inherits name=“com.google.gwt.user.User” />

  <source path=“client”/>

  <entry-point class=“javatwo2012.mvc.gwt.client.Hello” />

</module>
• 優點
 –   Rich-client
 –   有 GWT Designer 支援
 –   UI 編寫容易, 無須理解 Javascript ?
 –   有許多延伸實作的專案
• 缺點
 – 學習曲線高
 – 開發效率慢
 – 都是在 Java 上開發
Conclusion

More Related Content

What's hot

Java Web Programming [4/9] : JSP Basic
Java Web Programming [4/9] : JSP BasicJava Web Programming [4/9] : JSP Basic
Java Web Programming [4/9] : JSP BasicIMC Institute
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011Arun Gupta
 
Suportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EESuportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EERodrigo Cândido da Silva
 
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlassian
 
AtlasCamp 2013: Modernizing your Plugin UI
AtlasCamp 2013: Modernizing your Plugin UI AtlasCamp 2013: Modernizing your Plugin UI
AtlasCamp 2013: Modernizing your Plugin UI colleenfry
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Fahad Golra
 
What's new in Java EE 7
What's new in Java EE 7What's new in Java EE 7
What's new in Java EE 7gedoplan
 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverSpike Brehm
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreIMC Institute
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5Tieturi Oy
 
JSP - Part 2 (Final)
JSP - Part 2 (Final) JSP - Part 2 (Final)
JSP - Part 2 (Final) Hitesh-Java
 
Fifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 MinutesFifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 Minutesglassfish
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3Neeraj Mathur
 

What's hot (20)

Java Web Programming [4/9] : JSP Basic
Java Web Programming [4/9] : JSP BasicJava Web Programming [4/9] : JSP Basic
Java Web Programming [4/9] : JSP Basic
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug
 
Suportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EESuportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EE
 
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
 
AtlasCamp 2013: Modernizing your Plugin UI
AtlasCamp 2013: Modernizing your Plugin UI AtlasCamp 2013: Modernizing your Plugin UI
AtlasCamp 2013: Modernizing your Plugin UI
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2
 
What's new in Java EE 7
What's new in Java EE 7What's new in Java EE 7
What's new in Java EE 7
 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Implicit object.pptx
Implicit object.pptxImplicit object.pptx
Implicit object.pptx
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
JSP - Part 2 (Final)
JSP - Part 2 (Final) JSP - Part 2 (Final)
JSP - Part 2 (Final)
 
Fifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 MinutesFifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 Minutes
 
Jdbc
JdbcJdbc
Jdbc
 
10 J D B C
10  J D B C10  J D B C
10 J D B C
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3
 

Viewers also liked

Java 開發者的函數式程式設計
Java 開發者的函數式程式設計Java 開發者的函數式程式設計
Java 開發者的函數式程式設計Justin Lin
 
GCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow IntroductionGCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow IntroductionSimon Su
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7Justin Lin
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用Simon Su
 
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析Justin Lin
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Justin Lin
 
淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式CodeData
 
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310  –  Problems, Concepts and ApproachesJoda-Time & JSR 310  –  Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and ApproachesJustin Lin
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合Kyle Lin
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional APIJustin Lin
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展Leon Chen
 
如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統なおき きしだ
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJustin Lin
 
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用建興 王
 
Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Shihpeng Lin
 
Block chain
Block chainBlock chain
Block chainJini Lee
 

Viewers also liked (20)

Java 開發者的函數式程式設計
Java 開發者的函數式程式設計Java 開發者的函數式程式設計
Java 開發者的函數式程式設計
 
GCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow IntroductionGCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow Introduction
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
 
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
 
淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式
 
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310  –  Problems, Concepts and ApproachesJoda-Time & JSR 310  –  Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and Approaches
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展
 
如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
 
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
 
Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息
 
Block chain
Block chainBlock chain
Block chain
 

Similar to Javatwo2012 java frameworkcomparison

In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces Skills Matter
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 DemystifiedAnkara JUG
 
Symfony2 - from the trenches
Symfony2 - from the trenchesSymfony2 - from the trenches
Symfony2 - from the trenchesLukas Smith
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's NewTed Pennings
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the TrenchesJonathan Wage
 
From 0 to Spring Security 4.0
From 0 to Spring Security 4.0From 0 to Spring Security 4.0
From 0 to Spring Security 4.0robwinch
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Michael Plöd
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Foreverstephskardal
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample applicationAntoine Rey
 
Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Alex Tumanoff
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Arun Gupta
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIAlex Theedom
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web FrameworkLuther Baker
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest servicesIoan Eugen Stan
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Arun Gupta
 

Similar to Javatwo2012 java frameworkcomparison (20)

In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
 
Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 Demystified
 
Symfony2 - from the trenches
Symfony2 - from the trenchesSymfony2 - from the trenches
Symfony2 - from the trenches
 
Jsf
JsfJsf
Jsf
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the Trenches
 
From 0 to Spring Security 4.0
From 0 to Spring Security 4.0From 0 to Spring Security 4.0
From 0 to Spring Security 4.0
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Forever
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Let's react - Meetup
Let's react - MeetupLet's react - Meetup
Let's react - Meetup
 
Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding API
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
 

More from Jini Lee

Dev ops 顛覆新時代創新論壇
Dev ops 顛覆新時代創新論壇Dev ops 顛覆新時代創新論壇
Dev ops 顛覆新時代創新論壇Jini Lee
 
Javaee7 jsr356-websocket
Javaee7 jsr356-websocketJavaee7 jsr356-websocket
Javaee7 jsr356-websocketJini Lee
 
Java8 javatime-api
Java8 javatime-apiJava8 javatime-api
Java8 javatime-apiJini Lee
 
Tencent case study-2015
Tencent case study-2015Tencent case study-2015
Tencent case study-2015Jini Lee
 
投資組合規劃 Group8
投資組合規劃 Group8投資組合規劃 Group8
投資組合規劃 Group8Jini Lee
 
SoftLeader Jackson Training
SoftLeader Jackson TrainingSoftLeader Jackson Training
SoftLeader Jackson TrainingJini Lee
 
Software project-part1-realworld
Software project-part1-realworldSoftware project-part1-realworld
Software project-part1-realworldJini Lee
 

More from Jini Lee (9)

Dev ops 顛覆新時代創新論壇
Dev ops 顛覆新時代創新論壇Dev ops 顛覆新時代創新論壇
Dev ops 顛覆新時代創新論壇
 
Quartz
QuartzQuartz
Quartz
 
Javaee7 jsr356-websocket
Javaee7 jsr356-websocketJavaee7 jsr356-websocket
Javaee7 jsr356-websocket
 
Java8 javatime-api
Java8 javatime-apiJava8 javatime-api
Java8 javatime-api
 
Maji BP
Maji BPMaji BP
Maji BP
 
Tencent case study-2015
Tencent case study-2015Tencent case study-2015
Tencent case study-2015
 
投資組合規劃 Group8
投資組合規劃 Group8投資組合規劃 Group8
投資組合規劃 Group8
 
SoftLeader Jackson Training
SoftLeader Jackson TrainingSoftLeader Jackson Training
SoftLeader Jackson Training
 
Software project-part1-realworld
Software project-part1-realworldSoftware project-part1-realworld
Software project-part1-realworld
 

Recently uploaded

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

Javatwo2012 java frameworkcomparison