Apache NetBeans (Incubating)
Restructuring of Project Templates in Apache NetBeans
There's been lots of discussion in the Apache NetBeans community about how best to express the fact that Apache Maven and Apache Gradle are more modern choices to be aware of than Apache Ant, while at the same time not implying that there's anything wrong with using Apache Ant.
Here's what we seem to have reached consensus around, i.e., move all Ant-based project templates into a separate Ant-specific folder, while putting the other two build systems higher and therefore more prominently in the list:
With the above, someone is less likely to simply go to the no-longer-existing Java category and then end up with an Ant-based project, without thinking about it. By default, the user of Apache NetBeans is now encouraged to consider Apache Maven and Apache Gradle first. The old Ant-related categories are still there, so as not to confuse anyone completely, just structured within a lower ranked "Java with Ant" category. The above also solves the discussion re "Java EE", i.e., here the idea, from discussions, is to name the category "Java Enterprise".
At startup, all categories are closed, i.e., none is more prominent initially than any other.
An objection one could have is that, if you're a complete Java newbie, you won't know what Maven, Gradle, or Ant are. Well, that has always been the case and NetBeans has artificially hidden that choice by having a category simply named "Java", which then resulted in everyone ending up with Ant-based projects. To turn that around and have a category simply named "Java" that results in Maven-based projects is probably not right either, i.e., a careful balance needs to be struck.
Hoping that all factions in this lengthy discussion are relatively satisfied with this approach. :-)
Issue: https://issues.apache.org/jira/browse/NETBEANS-2040
Pull request: https://github.com/apache/incubator-netbeans/pull/1115
Posted at 02:31PM Feb 01, 2019
by Geertjan in General |
|
Enterprise Cluster Integrated into Apache NetBeans
Hurray, the 'enterprise' cluster, constituting all the modules in Apache NetBeans GitHub that provide features for Java/Jakarta EE development, provided in the 2nd Oracle donation of NetBeans to Apache, has been integrated into the daily builds.
Now, for the first time, out of the box, you'll have the support that was part of NetBeans IDE 8.2 for Java EE development directly available in Apache NetBeans, that is, without you needing to install any plugins.
However, aside from the point that this means we do not yet have Java EE 8 support, since 8.2 did not (could not, because of being released some time prior to Java EE 8) have support for Java EE 8, another question now presents itself—whether we really want to have two categories in the New Project dialog, one named "Java EE" and the other named "Java Web", as shown below, with the former containing project types relating to EJBs and EARs, which are not (should not) be very current anymore, as shown below in the screenshots.
My suggestion would be to either relabel the above to "Modern Java EE" and "Vintage Java EE". (I like the word "Vintage", which I've learned about from JUnit, i.e., that's how they refer to JUnit 4.) Once there is Java EE 8 support, we could use the name "Jakarta" instead of "Modern Java EE". Or, maybe the EJB and EAR support should simply be removed?
Posted at 07:03PM Jan 28, 2019
by Geertjan in General |
Comments [2]
|
Junit 5, Apache Ant, and Apache NetBeans
Junit 5 is, architecturally, so different to previous versions, that it should really be called Jupiter, instead. However, this is not a problem when you're using Maven, since Maven resolves all transitive dependencies for you, and is supported in that way from Apache NetBeans 10 onwards. Not so with Apache Ant, of course, where you need to set each and every JAR you need on a classpath of one form or another.
That is not a pretty picture in the end, when compared to JUnit 4, where you had just that JAR, plus Hamcrest. With JUnit 5, you need, in addition to junit-jupiter-api
, junit-jupiter-params
, and junit-jupiter-engine
, to also declare the transitive dependency apiguardian-api
, while in the case of Apache Ant, you need to deal with the JUnitLauncher
, if you want to make use of the new junitlauncher
Ant task, in addition to four other JARs, which need to be on Ant's classpath, as explained here.
An alternative approach is to use org.junit.platform.console.ConsoleLauncher
, as shown here, which looks like this in my build.xml
, i.e., it is named test
, so that it will run automatically at the end of the test run when the Test Project action is invoked:
<target name="test" depends="compile-test,-pre-test-run"> <java dir="${work.dir}" classpath="${run.test.classpath}" classname="org.junit.platform.console.ConsoleLauncher"> <arg value="--scan-classpath"/> <arg line="--reports-dir build/test/results"/> </java> <junitreport todir="build/test/results"> <fileset dir="build/test/results"> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="build/test/results/html"/> </junitreport> </target>
The above means that the JUnit
tasks set by default in the build-impl.xml
file will simply fail silently, since I don't have JUnit 4 on my classpath. At the end of the process, the above will be run, org.junit.platform.console.ConsoleLauncher
will be found on my classpath, and then the JUnit 5 tests will be run.
What is the advantage of the above over using JUnitLauncher
? Well, JUnitLauncher
has requirements relating to Ant's path, which has advantages too, of course, i.e., simply set everything up once (which can also be done inside Apache NetBeans, in the Ant tab in the Options window). But, for right now, I'd prefer to work with just one path, i.e., the application's path.
Another downside is that, so far, the above solution doesn't integrate with the Test Results window, though it does produce some nice reports via the junitreport
task above, in the build
folder.
The key problem seems to me to be that the JUnit
Ant task no longer exists in JUnit 5, which was for Ant-based projects the basis of the integration with the Test Results window in Apache NetBeans. If the JUnit
task could continue to be used, in whatever way, that would solve a lot of the problems, though the question of the many JARs needed on the classpath would remain. Maybe library providers should reach out to tools providers when putting these kinds of new solutions together, since the only reason that JUnit 5 now works with Maven in Apache NetBeans is that Surefire is used, i.e., in the case of Maven the completely new approach JUnit has taken can simply be avoided there. Here is some relevant discussion in Apache NetBeans GitHub, and the Launcher API looks interesting.
Probably the best solution for Ant users in Apache NetBeans would be to be able to continue to use JUnit 4, rather than JUnit 5, since the latter is a total nightmare to set up in the context of Ant, as described above. In the world of JUnit, "vintage" is the cool name they have for "legacy", and if you're using Ant at all, you're probably best described as "vintage" and hence only having support for JUnit 4 is not a big deal for you. However, not sure at all how that would work, we'd need to investigate how/if when JUnit tests are added to Maven projects, JUnit 5 tests and dependencies would be set, while when adding JUnit tests to Ant projects JUnit 4 tests and dependencies would be set.
Posted at 12:00PM Jan 27, 2019
by Geertjan in General |
|
Master Your Scripting Skills with the New Tutorial!
Enhanced scripting tutorial has just become part of Apache NetBeans documentation. It contains various examples showing how to communicate from Java with JavaScript, Python and other languages. The following topics are covered:
- Setup
- Get started
- Guest language "Hello World!"
- It's a polyglot world
- Add a language
- Hello World in Python and JavaScript
- Cast Array to List
- Call guest language functions from Java
- Call multiple guest language functions with shared state from Java
- Access guest language classes from Java
- Access guest language data structures from Java
- Access Java from guest languages
Read more in the online tutorial.
Posted at 01:20PM Jan 24, 2019
by jtulach in Technology |
Comments [2]
|
[ANNOUNCE] Apache NetBeans (incubating) 10.0 Released
The Apache NetBeans team is proud to announce the release of Apache NetBeans (incubating) 10.0.
Apache NetBeans (incubating) 10.0 constitutes all but the enterprise cluster in the Apache NetBeans Git repo, which together provide the NetBeans Platform (i.e., the underlying application framework), as well as all the modules that provide the Java SE, PHP, JavaScript and Groovy features of Apache NetBeans.
In short, Apache NetBeans (incubating) 10.0 is a full IDE for Java SE, PHP and JavaScript development with some Groovy language support.
Read more on our download page:
https://netbeans.apache.org/download/nb100/nb100.html
New & Noteworthy features of the 10.0 Release:
https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+10.0+New+and+Noteworthy
See the below for the donation status of features that have not been donated or included in Apache builds yet, i.e., are not part of Apache NetBeans (incubating) 10.0, e.g., features for working with C/C++, and more:
https://cwiki.apache.org/confluence/display/NETBEANS/Apache+Transition
Work is being done on bringing netbeans.org to Apache. In the meantime, refer to the below for all details related to Apache NetBeans:
Posted at 08:20AM Dec 27, 2018
by Geertjan in General |
Comments [7]
|
Is Apache NetBeans 10 Ready To Be Released?
Apache NetBeans 10vc3 is the third voting candidate of Apache NetBeans (incubating) 10 and has been created for purposes of NetCAT activities:
Build artifacts: https://dist.apache.org/repos/dist/dev/incubator/netbeans/incubating-netbeans/incubating-10.0-vc3
Sources: https://dist.apache.org/repos/dist/dev/incubator/netbeans/incubating-netbeans/incubating-10.0-vc3
Please try 10vc3 and fill out the Community Acceptance Survey:
https://goo.gl/forms/jCzBLA34hNZb4k5G2
Watch a helpful YouTube clip here: https://www.youtube.com/watch?v=G7_OPJ6grvM
Posted at 11:01AM Nov 07, 2018
by Geertjan in General |
Comments [4]
|
Duke Choice Award 2018 for Apache NetBeans
During Oracle Open World 2018, Apache NetBeans was awarded a Duke's Choice Award, recognizing its innovation and the hard and dedicated work involved in moving NetBeans from Oracle to Apache.
A crowd of Apache NetBeans community members received the award on the stage from Georges Saab, VP of the Java Platform at Oracle.
Posted at 12:00AM Oct 23, 2018
by Geertjan in General |
|
Apache NetBeans at Oracle Code One 2018
-
Saturday, Oct 20, 19:00 p.m. | Thirsty Bear, 661 Howard Street
Informal hangout (i.e., buy your own beer) with Apache NetBeans PPMC, committers, and community! -
Sunday, Oct 21, 11:00 a.m. | Bike Ride
Go here for details: https://blog.idrsolutions.com/2018/09/open-invitation-to-bike-ride-at-oracle-codeone/. -
Monday, Oct 22, 1:30 p.m. - 2:15 p.m. | Moscone West - Room 2016
Title: Machine Learning for Software Developers in 45 Minutes [DEV5090]
Speakers: Zoran Sevarac, Frank Greco -
Monday, Oct 22, 1:30 p.m. - 2:15 p.m. | Moscone West - Room 2022
Title: Back from the Ashes: eFX/JavaFX Applications Made Simple [DEV5406]
Speakers: Sven Reimers, Florian Vogler -
Monday, Oct 22, 2:30 p.m. - 3:15 p.m. | Moscone West - Room 2018
Title: Exploring Java Heap Dumps [DEV5262]
Speakers: Ryan Cuprak -
Monday, Oct 22, 7:30 p.m. - 8:15 p.m. | Moscone West - Room 2005
Title: Deep Learning for Application Performance Optimization [BOF4967]
Speakers: Zoran Sevarac -
Monday, Oct 22, 8:30 p.m. - 9:15 p.m. | Moscone West - Room 2009
Title: Hacking the NetBeans IDE [BOF4760]
Speakers: Mark Stephens, Developer, Bethan Palmer -
Tuesday, Oct 23, 7:30 p.m. - 8:15 p.m. | Moscone West - Room 2010
Title: Writing Better Code (Faster) in the Apache NetBeans IDE [BOF4759]
Speakers: Mark Stephens, Developer, Bethan Palmer -
Tuesday, Oct 23, 7:30 p.m. - 8:15 p.m. | Moscone West - Room 2014
Title: Got a Gig Teaching Java? You Should Be Using Apache NetBeans in the Classroom [BOF4820]
Speakers: Kenneth Fogel, Instructor, Concordia University -
Wednesday, Oct 24, 2:30 p.m. - 3:15 p.m. | Moscone West - Room 2016
Title: Bridging Swing and JavaFX on an Enterprise Scale [DEV6080]
Speakers: Sven Reimers, José Pereda -
Wednesday, Oct 24, 9:00 a.m. - 9:45 a.m. | Moscone West - Room 2010
Title: Java Debugging Tips [DEV4512]
Speakers: Martin Skarsaune -
Wednesday, Oct 24, 2:45 p.m. - 4:45 p.m. | Moscone West - Room 2001A (HOL)
Title: Lambda Programming Laboratory - BYOL [HOL6006]
Speakers: Jeff Dinkins, Stuart Marks, Maurice Naftalin, José Paumard -
Thursday, Oct 25, 09:00 AM - 11:00 AM | Moscone West - Overlook 2A (HOL)
Title: Jakarta EE Hands-on Lab - BYOL [HOL4852]
Speakers: David Heffelfinger, Bob Larsen
Posted at 02:02PM Oct 17, 2018
by Geertjan in General |
|
Initial Language Server Protocol Support in Apache NetBeans 10
Did you know that the first stage of Language Server Protocol (LSP) support will be included in Apache NetBeans 10?
See this PR for details, with instructions for how to use it.
https://github.com/apache/incubator-netbeans/pull/629
Some screenshots for Kotlin support via LSP:
A lot more work needs to be done, of course, some of which is here, you're welcome to join in:
https://github.com/apache/incubator-netbeans/pull/926
Posted at 10:50AM Oct 10, 2018
by Geertjan in General |
|
PHP 7.3 Support
Hi all. Today, we will briefly show you about PHP7.3 support which will be available in the next NetBeans version i.e. NetBeans 10.
First of all, I strongly hope that new features are tested by PHP users before NetBeans 10 is released because there should be bugs. Definitely, need your help! If you are interested in them, just test them. You can download a dev version here.
PHP 7.3 Support
To enable it, you have to set PHP 7.3 as the PHP version of your PHP project.
NetBeans provides support for the new three syntaxes.
Allow a trailing comma in function calls
list() Referenct Assignment
Flexible Heredoc and Nowdoc Syntaxes
Note: We won't provide support for the old syntax any longer. i.e. NetBeans treats the following code as an error.
$heredoc = <<< END END{$variable} END;
PHP 7.1, 7.2 and more PHP features
The other PHP features for NetBeans 10 are here. We have also implemented PHP7.1, 7.2, new hints, new code foldings and more.
That's all for today. As always, please test it. You can download a development version from Jenkins Build. If you find some issues or enhancements, please report them to JIRA with your exact steps to reproduce them. (Components: php - Editor). Thanks.
Posted at 04:06AM Oct 01, 2018
by Junichi in PHP |
Comments [4]
|
PHPStan Support
Hi all. Today, we will show you about PHPStan integration which will be available in the next NetBeans version i.e. NetBeans 10 as a new code analysis feature. If you have already used other code analysis features(e.g. Code Sniffer), you should be able to use this with similar way soon.
Options
First of all, let's set the Options (Tools > Options > PHP > Code Analysis > PHPStan). You can set a script path, a configuration file path and a level. At least you have to set the PHPStan script path to "PHPStan". If you don't set "Configuration" path, the configuration file of project root directory would be used.
Inspect project/directory/file
Then, let's inspect a project/direcoty/file using PHPStan. Please click "Source > Inspect...". The inspect dialog is shown.
Please choose "Scope" which you would like to inspect and PHPStan as "Configuration". The files are inspected when you click the "inspect" button. Finally, The results are shown in the inspector window after the inspection is done.
That's all for today. As always, please test it. You can download a development version from Jenkins Build. If you find some issues or enhancements, please report them to JIRA (Components: php - Code). Thanks.
Posted at 03:21AM Sep 26, 2018
by Junichi in PHP |
Comments [5]
|
Audio of Virtual Apache NetBeans Meeting 3
The third of a series of informal virtual meetups took place today, focused specifically on why/how/when to move netbeans.org to Apache.
The audio of the meeting is available here and takes about 53 minutes:
https://www.youtube.com/watch?v=VmhX4VAlWlc
Screenshot of what we saw of each other, partly:
Related links:
Posted at 09:50PM Sep 06, 2018
by Geertjan in General |
|
Apache NetBeans Guest Blog: Edward M. Kagan
I'm a big fan of NetBeans, and a team-lead of 2pm.tech crew, a group of independent developers from Russia. For about the last five years, we have been using NetBeans in all of our projects, from "hardcore C embedded systems" to "Grails web-apps", and as a result we've also been hacking NetBeans a little.
As of 2018, there are now 11 developers in the team. Currently, half of us work with Grails apps, despite the poor Grails support in NetBeans at the moment. We're continuing to work with NetBeans due to it simplicity, small footprint, and design. If the NetBeans community would dig up the Groovy/Grails support, lots of developers will switch to NetBeans I think, and also I'll be very happy, too. :-)
One of coolest things we've created lately is the Crew Look & Feel plugin, which we hadn't released to the public yet and now we think the time has come. It's not too complicated, but a nice little add-in to have, maybe it'll be useful for other users too. Here it is on the Plugin Portal:
http://plugins.netbeans.org/plugin/74527/2pmtech-look-and-feel
Click to enlarge the images below, to get a feel for the new plugin that provides our look and feel:
NetBeans is my favorite IDE and Apache is one of my technological icons. So, I'm very happy for NetBeans to be migrating to Apache. Apache does not always give you a sweet design, though it does always provide nice UNIX-like tools, and I love it. I hope Apache will make NetBeans not only better, but the best IDE for all Java-based technologies. :-)
Posted at 11:29AM Sep 05, 2018
by Geertjan in General |
|
[PHP] Conditional breakpoints and new Twig features
Hi all. Today, we will show you some new features which will be available in the next NetBeans version, maybe (NetBeans 10? NOTE: we cannot promise anything about release contents at the moment).
First of all, if you would like to try new features, please build NetBeans yourself.
git clone git@github.com:apache/incubator-netbeans.git cd incubator-netbeans ant -Dcluster.config=full (or ant -Dcluster.config=php)
You can find the start-up files in the nbbuild/netbeans/bin directory if the build succeeds. So please run it.
Debugger: Conditional breakpoints
You can stop the debugger if the context matches your condition. i.e. If the condition is true, the debugger stops on the breakpoint, otherwise, it does not stop there.
I assume that you have already done the settings for debugging. (please see: HowToConfigureXDebug) If xdebug doesn't work, please ask someone via Apache NetBeans mailing lists. (Please don't ask here.)
Just in my case(Ubuntu 18.04):
sudo apt install php-xdebug sudo vim /etc/php/7.2/mods-available/xdebug.ini # Change to the following zend_extension=xdebug.so xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.idekey="netbeans-xdebug"
Let's try running with a sample code(index.php):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php $array = ["foo", "bar", "baz", "qux"]; foreach ($array as $value) { echo $value; } ?> </body> </html>
Step 1: Enable a breakpoint
You can enable it when you click a line number.
Step 2: Show the Breakpoint Properties dialog
To show it, please right-click the breakpoint, then please click Breakpoint > Properties.
Step 3: Input a condition
Please check "Condition" and input your condition to the combo box, then click the OK button.
Step 4: Run Debug Project
Please click Debug > Debug Project or the icon on the toolbar.
In this case, the debugger stops on the breakpont if $value is "baz".
Twig: Code completion for delimiters, brackets, and quotes
Twig editor supports code completion for delimeters({{ and {%), brackets([, (, and {), and quotes(" and '). This feature is enabled by default. If you would like to disable, please uncheck the options (Tools > Options > Editor > Code Completion > Language: Twig File).
Twig: Palette support
You can show the palette window. Please click Window > IDE Tools > Palette.
That's all for today. As always, please test it. If you find some issues or enhancements, please report them to JIRA (Components: php - Debugger, php - Twig). Thanks.
Posted at 11:26PM Aug 30, 2018
by Junichi in PHP |
Comments [4]
|
Audio of Virtual Apache NetBeans Meeting 2
The second of a series of informal virtual meetups took place today.
The audio of the meeting is available here and takes about 45 minutes:
https://www.youtube.com/watch?v=yQ72aZqwGec
Sign up to the next virtual meetups here:
https://doodle.com/poll/xueimbynzam7sri7
Posted at 11:43AM Aug 21, 2018
by Geertjan in General |
|