--- title: Client-Side Module Entry-Point order: 2 layout: page --- [[clientsideapp.entrypoint]] = Client-Side Module Entry-Point A client-side application requires an __entry-point__ where the execution starts, much like the [methodname]#init()# method in server-side Vaadin UIs. Consider the following application: [source, java] ---- package com.example.myapp.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.RootPanel; import com.vaadin.ui.VButton; public class MyEntryPoint implements EntryPoint { @Override public void onModuleLoad() { // Create a button widget Button button = new Button(); button.setText("Click me!"); button.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { mywidget.setText("Hello, world!"); } }); RootPanel.get().add(button); } } ---- Before compiling, the entry-point needs to be defined in a module descriptor, as described in the next section. [[clientsideapp.entrypoint.descriptor]] == Module Descriptor The entry-point of a client-side application is defined, along with any other configuration, in a client-side module descriptor, described in <<../clientside/clientside-module#clientside.module,"Client-Side Module Descriptor">>. The descriptor is an XML file with suffix [filename]#.gwt.xml#. [source, xml] ---- ---- You might rather want to inherit the [classname]#com.google.gwt.user.User# to get just the basic GWT widgets, and not the Vaadin-specific widgets and classes, most of which are unusable in pure client-side applications. You can put static resources, such as images or CSS stylesheets, in a [filename]#public# folder (not a Java package) under the folder of the descriptor file. When the module is compiled, the resources are copied to the output folder. Normally in pure client-side application development, it is easier to load them in the HTML host file or in a [classname]#ClientBundle# (see GWT documentation), but these methods are not compatible with server-side component integration, if you use the resources for that purpose as well.