<!--

     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>
