You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@netbeans.apache.org by Jaroslav Tulach <ja...@gmail.com> on 2023/02/09 04:38:56 UTC

NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

NetBeans isn't just an IDE, but it is a framework!

When designing frameworks and libraries that shall be widely adopted it is 
important to increase portability as much as possible. If an API can be used 
on different systems, different configurations, the amount of users including 
such API in their applications grows.

The best way to hurt portability is to depend on a 3rd party API that isn't 
portable. Depending on Win32 API is one such example. Of course, writing in 
Java (a language designed to write once and run everywhere) greatly increases 
portability. However there is another axis hurting portability - the supported 
JDK version. Of course, should a library be widely used, it has to support as 
oldest JDK as possible. These days it is JDK8 - the primary reason being that 
Android supports JDK8 - as such, should a library be aspire to be used on 
Android (as well as regular Java), it needs to stick to version eight. Btw. 
not that many years ago, Android only supported JDK6 and many libraries had to 
stay with JDK6 APIs and language.


Supporting the ancient JDK gives the application writers using such library or 
framework a freedom to choose their JDK. The application writers can then run 
on oldest or newest JDK. That's the kind of freedom they want. However there's 
transitivity of non-portability - the portability of the final application 
cannot be bigger than portability of the least portable library used. This 
applies also to 3rd party dependencies a framework or library has: again their 
non-portability may negatively affect portability of such framework or library. 

I was my NetBeans libraries to be as portable as possible and also run on 
Android. I want to use `Lookup` & co.
-jt




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Jaroslav Tulach <ja...@gmail.com>.
Late reply, sorry Antonio. I've just found your message.

Dne úterý 14. února 2023 20:52:28 CEST, Antonio napsal(a):
> Hi all,
> 
> I'm afraid I don't have time to read the whole thread. That's a pity,
> because it looks fun!
> 
> So I'll ask just a single queston to try to understand the situation.
> 
> On 9/2/23 5:38, Jaroslav Tulach wrote:
> > I was my NetBeans libraries to be as portable as possible and also run on
> > Android. I want to use `Lookup` & co.
> > -jt
> 
> I understand that you want to run Lookup & Co in Android, but I imagine
> you don't want to run the Enterprise cluster in Android, right? Either
> that or you sport a huge Android tablet/phone!

Right, I don't care about the "clearly IDE" clusters like `enterprise`.On the 
other hand I do care about VSCode integration and I do care about Jackpot. I 
want Jackpot to continue to run on JDK8 for many years to come.

> Question is: since NetBeans is modular and we now have a powerful Github
> action powered build system that compiles in thousands of different Java
> versions (and more to come by next year)...
> 
> ...Wouldn't it be possible to try to keep Lookup & Co (i.e. the platform
> cluster and probably a few others) binary compatible with JDK8 (with a
> specific Github action or something), and let the rest of clusters
> evolve with the times?

Yes, that sounds like a plan. However there is no need to draw the JDK8 vs. 
JDK11+ line along the clusters - we can use JDK11+ API in platform thanks to 
the modular NetBeans runtime system. I wrote a blog post about it:

http://wiki.apidesign.org/wiki/AlternativeImplementation

E.g. I am for focusing on modern JDKs, but the (platform/core) code has to be 
compiled to run on JDK8 and appropriate unit tests must pass on JDK8.
-jt




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Antonio <an...@vieiro.net.INVALID>.
Hi all,

I'm afraid I don't have time to read the whole thread. That's a pity, 
because it looks fun!

So I'll ask just a single queston to try to understand the situation.

On 9/2/23 5:38, Jaroslav Tulach wrote:
> I was my NetBeans libraries to be as portable as possible and also run on
> Android. I want to use `Lookup` & co.
> -jt

I understand that you want to run Lookup & Co in Android, but I imagine 
you don't want to run the Enterprise cluster in Android, right? Either 
that or you sport a huge Android tablet/phone!

Question is: since NetBeans is modular and we now have a powerful Github 
action powered build system that compiles in thousands of different Java 
versions (and more to come by next year)...

...Wouldn't it be possible to try to keep Lookup & Co (i.e. the platform 
cluster and probably a few others) binary compatible with JDK8 (with a 
specific Github action or something), and let the rest of clusters 
evolve with the times?

Thanks,
Antonio

P.S.: Apologies if this has been asked before.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Laszlo Kishalmi <la...@gmail.com>.
Well,

These are respectable things, on the other hand the "Java 8 Forever" T-Shirt
is getting more and more uncomfortable.

Fortunately, NetBeans is free and open source, many versions are available,
which are supporting JDK 8. If somebody would like to keep it that way, it's
still possible to keep a branch for it or even create a fork.

It seems someone has to pay the price. Either the active community, to keep
the Java 8 Runtime compatibility. Or someone has to step up and say, that
he/she would take care of some necessary backporting and releasing for 
Java 8
every now and then.

And again, there is nothing wrong with using and build on an older 
version of the
framework. Like, there is nothing wrong to use Java 8. It just has 
consequences...

On 2/8/23 20:38, Jaroslav Tulach wrote:
> NetBeans isn't just an IDE, but it is a framework!
>
> When designing frameworks and libraries that shall be widely adopted it is
> important to increase portability as much as possible. If an API can be used
> on different systems, different configurations, the amount of users including
> such API in their applications grows.
>
> The best way to hurt portability is to depend on a 3rd party API that isn't
> portable. Depending on Win32 API is one such example. Of course, writing in
> Java (a language designed to write once and run everywhere) greatly increases
> portability. However there is another axis hurting portability - the supported
> JDK version. Of course, should a library be widely used, it has to support as
> oldest JDK as possible. These days it is JDK8 - the primary reason being that
> Android supports JDK8 - as such, should a library be aspire to be used on
> Android (as well as regular Java), it needs to stick to version eight. Btw.
> not that many years ago, Android only supported JDK6 and many libraries had to
> stay with JDK6 APIs and language.
>
>
> Supporting the ancient JDK gives the application writers using such library or
> framework a freedom to choose their JDK. The application writers can then run
> on oldest or newest JDK. That's the kind of freedom they want. However there's
> transitivity of non-portability - the portability of the final application
> cannot be bigger than portability of the least portable library used. This
> applies also to 3rd party dependencies a framework or library has: again their
> non-portability may negatively affect portability of such framework or library.
>
> I was my NetBeans libraries to be as portable as possible and also run on
> Android. I want to use `Lookup` & co.
> -jt
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
> For additional commands, e-mail: dev-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Michael Bien <mb...@gmail.com>.
On 09.02.23 05:38, Jaroslav Tulach wrote:
> I was my NetBeans libraries to be as portable as possible and also run on
> Android. I want to use `Lookup` & co.

what percentage of NetBeans can run on android? Are users simply hoping 
that it works or are they running our tests on android? Since we aren't 
running any on it.

-mbien


> -jt
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
> For additional commands, e-mail: dev-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Ernie Rael <er...@raelity.com>.
It's too bad there are no NetBeans specific statistics, both IDE and 
platform.
It sure would be nice if there were some reference to stats on jdk 
version usage
in these  deliberations.

What I've seen in reports, the most recent I've found from mid 2022,

> even though Java 11 had been available for more than a year. Since
> then, the balance has shifted between these two LTS release versions.
> More than 48% of applications are now using Java 11 in production (up
> from 11.11% in 2020) with Java 8 a close second, capturing 46.45% of
> applications using the version in production.
>
> Java 17 has not climbed the charts, but in the handful of months since
> its release, it has already surpassed the Java 6, Java 10, and Java 16
> releases. [3]

Most reports show 8/11 neck and neck, with expectations that 11/17 continue
to increase share. [2], [3], [4]. Are there more recent reports around?

Something that seems to be missing from the conversation is an /Apache/
/NetBeans Mission Statement/ (or I just haven't seen it). That would include
who are the target users and with what priorities? Professionals, 
Hobbyists,
Educators? A more detailed breakdown might be appropriate. And of course
IDE vs Platform considerations.

-ernie

[1] 
https://www.stackchief.com/blog/Which%20Version%20of%20Java%20Should%20You%20Use%3F
[2] 
https://sdtimes.com/java/report-percentage-of-oracle-jdk-distributions-in-java-ecosystem-drops-significantly/
[3] https://newrelic.com/resources/report/2022-state-of-java-ecosystem
[4] 
https://www.infoworld.com/article/3652408/java-8-still-dominates-but-java-17-wave-is-coming-survey.html

On 23/02/08 8:38 PM, Jaroslav Tulach wrote:
> NetBeans isn't just an IDE, but it is a framework!
>
> When designing frameworks and libraries that shall be widely adopted it is
> important to increase portability as much as possible. If an API can be used
> on different systems, different configurations, the amount of users including
> such API in their applications grows.
>
> The best way to hurt portability is to depend on a 3rd party API that isn't
> portable. Depending on Win32 API is one such example. Of course, writing in
> Java (a language designed to write once and run everywhere) greatly increases
> portability. However there is another axis hurting portability - the supported
> JDK version. Of course, should a library be widely used, it has to support as
> oldest JDK as possible. These days it is JDK8 - the primary reason being that
> Android supports JDK8 - as such, should a library be aspire to be used on
> Android (as well as regular Java), it needs to stick to version eight. Btw.
> not that many years ago, Android only supported JDK6 and many libraries had to
> stay with JDK6 APIs and language.
>
>
> Supporting the ancient JDK gives the application writers using such library or
> framework a freedom to choose their JDK. The application writers can then run
> on oldest or newest JDK. That's the kind of freedom they want. However there's
> transitivity of non-portability - the portability of the final application
> cannot be bigger than portability of the least portable library used. This
> applies also to 3rd party dependencies a framework or library has: again their
> non-portability may negatively affect portability of such framework or library.
>
> I was my NetBeans libraries to be as portable as possible and also run on
> Android. I want to use `Lookup` & co.
> -jt
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:dev-unsubscribe@netbeans.apache.org
> For additional commands, e-mail:dev-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>
>

Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by John Neffenger <jo...@status6.com>.
On 2/8/23 8:38 PM, Jaroslav Tulach wrote:
> These days it is JDK8 - the primary reason being that
> Android supports JDK8 - as such, should a library be aspire to be used on
> Android (as well as regular Java), it needs to stick to version eight.

There are some benefits to that strategy, but there's also a cost, and 
I'm not sure it's worth it.

I played that compatibility game with the Microsoft Virtual Machine in 
Internet Explorer, which was stuck at Java 1.1 for years. By the time 
the Microsoft VM was discontinued, I never managed to catch up to the 
then-current Java versions 1.4 and 5, and my software became irrelevant.

People can move away from old technology very quickly. When they do, it 
can leave you far, far behind. I'll never let one company (with an 
agenda) hold me back again.

In fact, even the LTS releases mean little unless you're a paying 
customer. Ron Pressler, author of the JDK Virtual Threads API, has been 
trying to get that message out for a long time. Below is a small sample 
(see comments from user "pron"):

https://news.ycombinator.com/item?id=33028988

"Anyway, the mention of the perennially misunderstood Java LTS is a pet 
peeve of mine, ..."

"There's absolutely nothing special about them [LTS releases], and the 
development of the JDK ignores the availability of such offerings."

https://news.ycombinator.com/item?id=22610237

"All OpenJDK versions are created equal."

John


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




Re: NetBeans is a framework was: Lets talk about JDK 8 (new year edition)

Posted by Arafat BOUCHAFRA <ar...@gmail.com>.
Hi Jaroslav,

In your article about java framework portability, I agree with you a 100%,
and I'll add an important point, that sometimes we deal with low-level
code, by using JNI/JNA, and this precise point makes java portability in
front of a wall, I have learnt that from Limewire source code, in which we
can notice that its really difficult to make a 100% java portable
framework, due that each operating system had its own philosophy, and its
own underlaying low-level librairies.

At the end, to have a fully portable framework, in front of eyes, this one
should care on low-level code, because it's the only thing that will assure
to us a higher portability of this framework.

Regards

Le jeu. 9 févr. 2023 à 05:39, Jaroslav Tulach <ja...@gmail.com> a
écrit :

> NetBeans isn't just an IDE, but it is a framework!
>
> When designing frameworks and libraries that shall be widely adopted it is
> important to increase portability as much as possible. If an API can be
> used
> on different systems, different configurations, the amount of users
> including
> such API in their applications grows.
>
> The best way to hurt portability is to depend on a 3rd party API that
> isn't
> portable. Depending on Win32 API is one such example. Of course, writing
> in
> Java (a language designed to write once and run everywhere) greatly
> increases
> portability. However there is another axis hurting portability - the
> supported
> JDK version. Of course, should a library be widely used, it has to support
> as
> oldest JDK as possible. These days it is JDK8 - the primary reason being
> that
> Android supports JDK8 - as such, should a library be aspire to be used on
> Android (as well as regular Java), it needs to stick to version eight.
> Btw.
> not that many years ago, Android only supported JDK6 and many libraries
> had to
> stay with JDK6 APIs and language.
>
>
> Supporting the ancient JDK gives the application writers using such
> library or
> framework a freedom to choose their JDK. The application writers can then
> run
> on oldest or newest JDK. That's the kind of freedom they want. However
> there's
> transitivity of non-portability - the portability of the final application
> cannot be bigger than portability of the least portable library used. This
> applies also to 3rd party dependencies a framework or library has: again
> their
> non-portability may negatively affect portability of such framework or
> library.
>
> I was my NetBeans libraries to be as portable as possible and also run on
> Android. I want to use `Lookup` & co.
> -jt
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
> For additional commands, e-mail: dev-help@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>
>
>