\subsection{Introducción}

\begin{itemize}
	\item GWT $\rightarrow$ \href{http://code.google.com/webtoolkit/}{Google Web Toolkit}
	\item Toolkit de desarrollo en AJAX
	\begin{itemize}
		\item Desarrollado por Google
		\item Licencia \href{http://www.apache.org/licenses/LICENSE-2.0.html}{Apache 2.0} (Software Libre \href{http://www.fsf.org/licensing/licenses/}{según la FSF} y Open Source \href{http://www.opensource.org/licenses/apache2.0.php}{según la OSI})
		\item Desarrollado en Java
		\item Desplegado sobre un contenedor de Servlets
		\item El cliente lo desarrollas\ldots en Java!
		\begin{itemize}
			\item GWT te ofrece una API con widgets tradicionales como objetos Java
			\item Puedes desarrollar tus propios widgets con JSNI (Java\emph{Script} Native Interface)
			\item El compilador de GWT compilará el código Java a JavaScript
		\end{itemize}
		\item Muy centrado en DHTML
		\begin{itemize}
			\item Se puede integrar en páginas web existentes
			\begin{itemize}
				\item Incluso escritas en otras plataformas como PHP
			\end{itemize}
			\item No hay tantas capas de abstracción
			\begin{itemize}
				\item Más eficiente que otras tecnologías
			\end{itemize}
			\item Estilos CSS
			\item Podemos integrar el resultado con tecnologías Adobe Flash, Applets Java\ldots
		\end{itemize}
		\item Lo ``único'' que hace es facilitar \textbf{(mucho)} el trabajar con DHTML
		\begin{itemize}
			\item No tocas JavaScript $\rightarrow$ trabajas en tu IDE con Java
			\item No te preocupas de la plataforma $\rightarrow$ el toolkit se encarga de renderizarse bien en cada navegador
		\end{itemize}
	\end{itemize}
\end{itemize}

\begin{center}
	\includegraphics{img/gwt/Movil.jpg}\\
	\tiny{Aplicación GWT ejecutándose en Opera Mobile en Nokia 6630}
\end{center}

\newpage
\begin{center}
\includegraphics[scale=0.5]{img/gwt/primer_proyecto.png}
\end{center}
\begin{itemize}
	\item Una aplicación típica con Google Web Toolkit tiene tres partes:
	\begin{itemize}
		\item Parte \emph{cliente} $\rightarrow$ Desarrollado en Java 1.4
		\begin{itemize}
			\item El compilador de GWT lo compilará a JavaScript
			\item Sólo podemos utilizar la API de GWT
			\begin{itemize}
				\item No podemos utilizar .jar externos
				\item De la API de Java sólo podemos utilizar un pequeño subconjunto
				\item \texttt{java.util.Random} $\rightarrow$ \texttt{com.google.gwt.user.client.Random}
			\end{itemize}
		\end{itemize}
		\item Parte \emph{pública} $\rightarrow$ Ficheros públicos
		\begin{itemize}
			\item Imágenes, sonidos\ldots
		\end{itemize}
		\item Parte \emph{servidor} $\rightarrow$ Código Java del Servidor
		\begin{itemize}
			\item Código que se ejecuta en el servidor
			\item Sólo necesaria cuando va a haber interacción entre cliente y servidor (AJAX)
			\item Este código sí puede ejecutar las librerías que queramos
		\end{itemize}
	\end{itemize}
\end{itemize}


