Translate

Mostrando las entradas con la etiqueta Apache Click. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Apache Click. Mostrar todas las entradas

lunes, 28 de noviembre de 2011

Cual es la diferencia entre Apache Click y otros frameworks web java?

Cual es la diferencia entre apache click y otros frameworks web java? y porque deberíamos aprender este framework web?

La diferencia tecnológica más importante es que apache Click no mantiene estados en el servidor (es stateless) esto lo hace ideal para usarlo en proyectos los cuales podrían tener muchos usuarios. Dado que si mantenemos estados en el servidor y vamos guardando cosas en estas sesiones cuando tengamos millones de usuarios; el servidor va a necesitar mucha memoria para trabajar.

Apache click no mantiene estados en el servidor (aunque se lo puede configurar para que si) lo que permite mayor escalabilidad. En click las paginas y los componentes son recreados por cada request. La visión de apache click es una creación de paginas web de forma más tradicional.

Apache click tiene más ventajas pero sin duda esta es la razón más importante por la que yo elegiría este framework.

Apache click esta en constante desarrollo y es un proyecto top-level de Apache foundation.

Dejo links:

http://click.apache.org/
http://click.apache.org/docs/user-guide/htmlsingle/click-book.html

viernes, 3 de septiembre de 2010

Apache click y dobleClick


Apache click es un framework web, diseñado para ser eficiente y fácil de desarrollar, si tenemos en cuenta estos objetivos comprobamos que cumple altamente con las expectativas, resumiendo “alto framework”. La única desventaja es que esta muy inmaduro todavía, por ejemplo no trae una forma estándar de integrarse con Spring. Pero no todo esta perdido existe un proyecto llamado doble click que integra Apache click con Spring y ofrece unas anotaciones que nos hacen la vida más fácil aun.
Bueno vamos hacer un ejemplo, creamos un proyecto web con maven.

$ mvn archetype:create -DarchetypeartifactId=maven-archetype-webapp -DgroupId=com.example -DartifactId=example-war-project

Luego agregamos las dependencias al pom:

<!-- Apache Click -->

<dependency>
<groupId>org.apache.click</groupId>
<artifactId>click</artifactId>
<version>2.2.0</version>
</dependency>

<dependency>
<groupId>org.apache.click</groupId>
<artifactId>click-extras</artifactId>
<version>2.2.0</version>
</dependency>

<dependency>
<groupId>org.apache.click.doubleclick</groupId>
<artifactId>inject</artifactId>
<version>1.0</version>
</dependency>

<dependency>
<groupId>org.apache.click.doubleclick</groupId>
<artifactId>injectspring</artifactId>
<version>1.0</version>
</dependency>

<!-- /Apache Click -->

Necesitamos el siguiente repositorio:

<repositories>
<repository>
<id>doubleclick-repo</id>
<url>https://doubleclick.googlecode.com/svn/repo/</url>
</repository>
</repositories>

Ahora debemos configurar web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Web Application</display-name>
<description>Web Application</description>

<servlet>
<servlet-name>ClickServlet</servlet-name>
<servlet-class>org.apache.click.ClickServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>ClickServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>redirect.html</welcome-file>
</welcome-file-list>

</web-app>

Tenemos que crear un html redirect.html dado que el interceptor no puede tomar la pagina de inicio ya que el filtro dice *.htm entonces hacemos el redirect.htm:

<html>
<head>
<meta http-equiv="Refresh" content="0;URL=home/home.htm">
</head>
</html>

Ahora todas las paginas van a ir a home/home.htm, las paginas de apache click estan formadas con 2 archivos un htm y una clase java. Pero antes de crear estos archivos veamos el archivo click.xml necesario para que funcione apache click:

<?xml version="1.0" encoding="UTF-8"?>
<click-app>

<pages package="com.example.web"/>

<page-interceptor classname="org.apache.click.doubleclick.inject.DependencyInjectorPageInterceptor"
scope="application"/>

<controls>
<control classname="org.apache.click.doubleclick.injectspring.SpringControl" />
</controls>

</click-app>

Ahora veamos la HomePage.java :

/**
*
*/
package com.example.web.home;


/**
* Home Page
*
* @author emanuel
*
*/
public class HomePage extends Page {

private static final long serialVersionUID = -2868696724309671438L;

@InjectBean
private String title;

private String titlePage

@Override
public void onInit() {
this.titlePage = "Home";
}

}

Veamos home.htm :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="keywords" content="blog" />
<meta name="description" content="Blog Website" />

<title>Example - $titlePage </title>

</head>

<body>

<h1> $title </h1>

</body>
</html>

Buenísimo, ahora vamos a configurar applicationContext.xml de Spring :

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<bean id="hola" class="java.lang.String" >
<constructor-arg index="0" value="HOLA MUNDO!!" />
</bean>

</beans>

Y con esto terminamos, como ven doble click injecta el bean hola por medio de inferencia por tipo.

Espero que les guste el ejemplo, dejo links como siempre:

http://click.apache.org/
http://code.google.com/p/doubleclick/wiki/clickspring
http://emanuelpeg.blogspot.com/2010/02/apache-click.html

viernes, 12 de febrero de 2010

Apache Click

Apache Click es un framework para desarrollo web que alcanzo a ser Top level. Eso es mucho para el joven framework. Esta basado en el patrón MVC. Y mezcla sencillez con performance. No pude todavía probarlo pero me parece, a simple vista muy bueno.

Dejo links: