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.