<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
 
 
#Navigation Top
 [&lt;&lt;Back to the Users Guide Start](./usersguide.html)
 or
 [On to the Advanced Users Guide&gt;&gt;](./usingAdvanced.html)
 
#General Users Guide
 
 Using Ext-Scripting once properly setup is straight forward. Usually it comes down to editing, reloading
 on
 the browser editing, reloading the page, .... However if you edit within a running configurations keep
 an
 eye on the console/log output. All compile errors and messages go automatically into the log.
 
 
 ![](images/development-states.jpg)
 
 Image: Development Lifecycle
 
 The development cycle also can seen in the following video 
 and in the following videos in the Users Guide.
 
 
 <iframe class="youtube-player" type="text/html" width="640" height="480" src="http://www.youtube.com/embed/vUCCTCMjTPE" frameborder="0">
 </iframe>
 
 Video: Development Lifecycle in Action
 
 As you can see, there is no need for any recompile anymore, no server restart
 everything is done dynamically, and you get instant results.
 
 
#Navigation Bottom
 [&lt;&lt;Back to the Users Guide Start](./usersguide.html)
 or
 [On to the Advanced Users Guide&gt;&gt;](./usingAdvanced.html)
 
 
