
////
     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.
////
= Apache NetBeans 11.2 Features
:jbake-type: page-noaside
:jbake-tags: 11.2 features
:jbake-status: published
:keywords: Apache NetBeans 11.2 IDE features
:icons: font
:description: Apache NetBeans 11.2 features
:toc: left
:toc-title: 
:toclevels: 4
:syntax: true
:source-highlighter: pygments
:experimental:
:linkattrs:

Apache NetBeans 11.2 is the second Apache NetBeans release outside the Apache Incubator and the link:https://cwiki.apache.org/confluence/display/NETBEANS/Release+Schedule[second release of the new quarterly release cycle].

TIP: The LTS release of the Apache NetBeans 11 cycle is Apache NetBeans 11.0. The 11.1 and 11.2 releases have not been tested as heavily as the LTS release and may therefore be less stable. Use 11.2 to use the latest features and to provide feedback for the next LTS release, scheduled for April 2020. Go here to download  link:/download/nb110/nb110.html[Apache NetBeans 11.0], the current LTS release.

== Release Highlights

- JDK 13 support
- PHP 7.4 support
- JavaScript parser is now correctly licensed and no longer needs to be installed separately: link:https://github.com/apache/netbeans/pull/1407[https://github.com/apache/netbeans/pull/1407]
- Enhancement to the installer enables subsets of Apache NetBeans to be installed: https://github.com/apache/netbeans/pull/1505

== Java

The highlights of enhancements in the Java area are...

== PHP

The highlights of enhancements in the PHP area are...

== Important Fixes

- Maven-based NetBeans modules can now be created again: link:https://github.com/apache/netbeans/commit/9e32a853c38f2b7514a42a3395a673d8ad06300f[https://github.com/apache/netbeans/commit/9e32a853c38f2b7514a42a3395a673d8ad06300f]
- "Copy Dependent Libraries" in Ant-based projects works again: link:https://github.com/apache/netbeans/pull/1469[https://github.com/apache/netbeans/pull/1469]
- OpenJFX Gluon samples are now correctly registered: link:https://github.com/apache/netbeans/pull/1503[https://github.com/apache/netbeans/pull/1503]

== Miscellaneous

- The donation of the C/C++ features from Oracle to Apache was not complete at the time of the 11.2 release, though it is not far off, and the 11.3 release is scheduled to focus primarily on the integration of the C/C++ features, once they land in the Apache NetBeans GitHub.
- WildFly integration is supported by means of the link:http://plugins.netbeans.org/plugin/76472/wildfly-application-server[WildFly Application Server] plugin located in the Plugin Portal.

