On Fri, 26 Jan 2024 09:12:53 GMT, Alan Bateman <al...@openjdk.org> wrote:

> load-time instrumentation that defines auxiliary classes in the same run-time 
> package is a reasonable addition

Thanks for finding some common ground. I appreciate it.

> The more general request for an "unrestricted defineClass" conflicts with 
> several ongoing efforts so we've had to kick that to touch.

I better do not start to share my general opinion about JMS _(edit: sorry, 
couldn't resist in the end)_ - I mean the ongoing effort that started with 
Jigsaw - in detail, because that would end up in a flame war.

Let me just say, that "well-meant" is not the necessarily same as 
"constructive", "helpful" or "necessary". Back when Jigsaw was designed, it 
seemed to be a good idea. But it has been introduced a long time ago, and all 
my enterprise customers since then are trying to ignore its excistence as much 
as they can, mostly seeing it as an impediment or at least a major annoyance. I 
think, one of the reasons why Python gained so much traction for 
enterprise-level big data and machine learning stuff is that you have a dynamic 
language environment in which you can pretty much do whatever you want and just 
get things done.

Those same enterprise customers want to use the tools of their choosing with as 
many and as easy to use features as possible. They do not trade those features 
for security, but implement security in a different way, such as devising a 
micro service architecture and isolating containers from each other in 
OpenShift or what have you, defining service mesh rules on top of that, if 
necessary.

Deprecating security managers was a laudable idea, but adding those unnecessary 
restrictions in the JVM in exchange was kind of one step forward, two steps 
back. They just get in the way of getting useful things done. This is what a 
language and a VM are for: getting things done in a productive way with as few 
barriers as possible. Instead, with every new Java release, users and tool 
providers alike are forced to jump through more hoops. There is so much great, 
innovative stuff in the JVM and Java SE API. E.g., virtual threads are the 
greatest thing since bread came sliced. We want more of that and fewer 
barriers. Streams, NIO, the whole lambda and functional bunch of stuff, 
structured concurrency, better GC, records and neat ways to deconstruct them 
etc. - wow, great stuff. But new "security features" (a.k.a. restrictions) like 
modules and sealed classes - not so great from a productivity perspective. 
Since JDK 9, I have seen generations of developers trying to be more productive 
no
 t because but despite those new JVM "features".

I know that my perspective is quite subjective and might be biased. But as an 
agile coach dealing mostly with developers in the JVM ecosystem, I have yet to 
find a team in which more than a tiny minority thinks that JMS is useful. That 
is not because they are lazy to learn or do not want to leave their confort 
zones. It is, because the JVM makes it progressively harder to get things done 
instead of treating users like adults and letting them take responsibility for 
security as they see fit. Enforcing things like a helicopter parent is not the 
smartest move.

I apologise for polluting the thread with what ended up to be too much text 
that is related to the topic, but not exactly focused on the problem at hand.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/3546#issuecomment-1911803302

Reply via email to