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

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Javatwo2012 java frameworkcomparison