<!--

     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.

-->
<html>
  <head>
    <title>Groovy - An extensible multi-paradigm language for the JVM Platform</title>
  </head>
  <body>
    <h2>Groovy - An extensible multi-paradigm language for the JVM Platform<br/>(GroovyDoc for Groovy and Java classes)</h2>

    Groovy...
    <ul>
      <li>is an <strong>extensible</strong> and <strong>multi-paradigm</strong> language for the <strong>Java Virtual Machine</strong></li>
      <li>makes <strong>modern programming features</strong> available to Java developers with <strong>almost-zero learning curve</strong></li>
      <li>has a dynamic nature like Python and Ruby, which means that it is very powerful, easy to learn, and productive</li>
      <li>optionally has static typing like Java and Kotlin, which makes it fast and provides extra type checking when desired</li>
      <li>has first-class functional, stream processing and immutability support, meaning that it offers features similar to Scala and can offer many advantages when working in parallel processing or clustered environments</li>
      <li>supports <strong>Domain-Specific Languages</strong> and other compact syntax so your code becomes <strong>easy to read and maintain</strong></li>
      <li>makes writing shell and build scripts easy with its <strong>powerful processing primitives</strong>, OO abilities and an Ant DSL</li>
      <li>increases developer productivity by <strong>reducing scaffolding code</strong> when developing web, GUI, database or console applications</li>
      <li><strong>simplifies testing</strong> by supporting unit testing and mocking out-of-the-box</li>
      <li>compiles straight to Java bytecode so you can use it anywhere you can use Java; it <strong>seamlessly integrates</strong> with all existing Java objects and libraries</li>
    </ul>
  </body>
</html>
