Re: Why isn't Java support part of Postgresql core?

From: cowwoc <cowwoc(at)bbs(dot)darktech(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Why isn't Java support part of Postgresql core?
Date: 2014-09-18 20:58:16
Message-ID: 541B4758.7010703@bbs.darktech.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 18/09/2014 4:26 PM, David G Johnston [via PostgreSQL] wrote:
> ​ "only PostgreSQL uses it" ... PostgreSQL doesn't use Java.

I don't think it makes a difference from a licensing point of view. The
point is that the JRE is not used to run multiple distinct applications.

> You want PostgreSQL to pick a single implementation of Java and make
> it accessible via the pl/java language so that people can write
> triggers in Java instead of pl/pgsql. What I don't understand is
> whether you expect those triggers to call out to other Java code that
> the trigger writers may have written? That they would is being
> assumed and those external Java programs are what will have been
> tested, by the user, on specific combinations of JRE and OS that
> PostgreSQL may not be providing.

Let's talk about a concrete example. You're worried that PG will invoke
MyTrigger.java which uses Google Guava under the hood, and Guava (in
turn) will not run properly on the specific vendor/version we support?
This is Java we're talking about. There are very few incompatibilities
between JVM vendors and version and the ones that exist are very
manageable. I don't see a problem with picking a single implementation
and telling users their code must be compatible with it. In the past 12
years of working with Java I have not once run across an incompatibility
that was caused by the JVM. Every single time, it was a problem with
user code making assumptions which were not guaranteed by the
specification (i.e. their own problem).

> ​Also, there is no functional difference between a public and a
> private JRE.​ Pointing pl/java to a private JRE is no more or less
> secure than pointing it to whatever public JRE the administrator
> happens to have installed.

A public JRE is exploitable through web browsers, which have a much
larger attack surface than PostgreSQL does. To exploit the private JRE,
you'd need to write a JAR file to disk and have permissions to create a
new trigger. Alternatively, you'd need to have permission to invoke
existing triggers and know which combination of inputs could be used to
exploit a JRE bug. The latter is equivalent to a bug you would find in
any native libraries, like the recent heartbleed bug. It happens, but
that's no more vulnerable than any other native library.

> The choice of valid integrations between different applications is a
> decision best left to packagers (I deem install-from-source people
> their own packager in this context). I think it would be great to
> issue "apt-get install postgresql9.4-pljava-oraclejava8" and BOOM! I
> issue my CREATE EXTENSION and I'm ready to go.

I'm fine with that. I'm just saying that we should provide/support at
least one option. If they want to install a different JVM that's up to
them (and I see no problem with that).

> If we get to this point then why not have pljava-oracle-v8;
> pljava-oracle-v6; pljava-openjdk-v7 as separate languages with private
> JREs that can be installed side-by-side and the user can pick the one
> they wish to use?

If you want to support these many combinations, all the power to you. I
am only advocating officially supporting one combination and letting
people use other packages if they so wish. Again, I don't foresee any
major incompatibilities by using oracle vs openjdk. GCJ is a different
story and I would discourage its use.

> There is a lot that can be done in this area but someone - and not the
> core developers - needs to champion the cause; providing or asking for
> specific core enhancements to be made as integration problems arise.
> Then help the various packagers create the packages needed for
> end-users to easily install the final result on their system

Right. I've shifted the discussion to targeting packagers, not the core
developers. I just want to make sure the core developers are comfortable
with this arrangement from a licensing/distribution/support point of view.

Gili

--
View this message in context: http://postgresql.1045698.n5.nabble.com/Why-isn-t-Java-support-part-of-Postgresql-core-tp5819025p5819560.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Merlin Moncure 2014-09-18 21:01:55 Re: Why isn't Java support part of Postgresql core?
Previous Message Shaun Thomas 2014-09-18 20:31:29 Re: Why isn't Java support part of Postgresql core?