Re: Pre-processing during build

From: "Markus KARG" <markus(at)headcrashing(dot)eu>
To: "'List'" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Pre-processing during build
Date: 2015-06-17 20:53:30
Message-ID: 005d01d0a93f$aac42740$004c75c0$@eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Well, there IS a difference: We can pack our own copy of java.sql.Type with our Driver, but we should not dare to do that with non-java.sql.* types. Hence, if that is the only package, we're safe. No problem.

This is a typical pattern used by several Java EE specifications. For example, JPA. If the JRE finds the class on the bootstrap classpath, it uses it. If not, it's using the one on the application classpath. Finely documented by the JVM specification, BTW, and performed daily by Java EE specs.

-----Original Message-----
From: pgsql-jdbc-owner(at)postgresql(dot)org [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] On Behalf Of Mark Rotteveel
Sent: Mittwoch, 17. Juni 2015 13:13
To: List
Subject: Re: [JDBC] Pre-processing during build

On Wed, 17 Jun 2015 06:15:47 -0400, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
> On 17 June 2015 at 03:07, Mark Rotteveel <mark(at)lawinegevaar(dot)nl> wrote:
>
>> On Wed, 17 Jun 2015 00:02:40 +0300, Vladimir Sitnikov
>> <sitnikov(dot)vladimir(at)gmail(dot)com> wrote:
>> > 2015-06-16 22:30 GMT+03:00 Markus KARG <markus(at)headcrashing(dot)eu>:
>> >> The answer is pretty simple: Try it out. :-)
>> >>
>> >> Just compile a JRE 8 class down to byte code level 6 and load it on
>> Java
>> >> level 7. That's what I proposed. Nothing else. It really bet will
work
>> >> unless you try to INSTANTIATE JRE-only classes, but it should LOAD.
>> >> And
>> >> nothing more we need.
>> >
>> > Markus, can you please be more explicit in your suggestion?
>> >
>> > I did try a simple "Hello, world" and it does not run in stock JDKs
of
>> > MacOS: https://gist.github.com/vlsi/aeeb4a61d9c2b67ad213
>> > Even if you manage to make that fly, that would be built on sand.
>>
>> Good example: it demonstrates at least that using reflection (eg
>> getDeclaredMethods; or in this case privateGetDeclaredMethods) will
lead
>> to
>> a NoClassDefFoundError.
>>
>>
> I'm not sure this is a great example as Optional itself is a java 8
> construct.

Yes, and so is java.sql.SQLType. So if this doesn't work for Optional, it
also won't work for SQLType.

> Either way Spring is able to do this, as are others?

Spring uses a lot of reflection, proxies, byte code generation, etc to get
things done. I am not sure if you want to go that way.

Mark

--
Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Markus KARG 2015-06-17 20:59:18 Re: Pre-processing during build
Previous Message Markus KARG 2015-06-17 20:49:35 Re: Pre-processing during build