
////
     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

== Release Drivers

=== Java

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

=== PHP

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

== Enhancements and Fixes

Closed issues for 11.2: link:https://github.com/apache/netbeans/milestone/3?closed=1[https://github.com/apache/netbeans/milestone/3?closed=1]

The highlights of the enhancements and fixes are listed below.

=== Enhancements

- Gradle enhancements include being able to read the JDK's "--enable-preview": link:https://github.com/apache/netbeans/pull/1494[https://github.com/apache/netbeans/pull/1494]
- Amazon-related updates: link:https://github.com/apache/netbeans/pull/1312[https://github.com/apache/netbeans/pull/1312]
- LSP server for Java: link:https://github.com/apache/netbeans/pull/926[https://github.com/apache/netbeans/pull/926]
- HTML5 attribute syntax support: link:https://github.com/apache/netbeans/pull/1380[https://github.com/apache/netbeans/pull/1380]
- Cleaned up Welcome Screen no longer refers to Oracle backends: link:https://github.com/apache/netbeans/pull/1457[https://github.com/apache/netbeans/pull/1457]

=== 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]

== Notes

- The donation of the C/Cplusplus-related 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 (January 2020) 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.

