You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Bernd Waibel <BW...@intarsys.de> on 2016/03/14 13:59:26 UTC
Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
Hello together,
I am trying to compile "james-project", but I am just following Maven errors.
At this point I did find something, I am not sure if I interpret this correctly.
The Cassandra implementation uses Lambdas. E.g. in CassandraTableManager.
The pom.xml of "james-project" does define a target jdk of 1.6:
<target.jdk>1.6</target.jdk>
The pom.xml of backends-common and the pom.xml of backends-cassandra do not redefine the target.jdk to another level.
Lamdas (and the used stream objects) are new in JDK 1.8, so a JDK Target of 1.6 for Cassandra do not seem to be meaningful.
The Cassandra project should redefine the target.jdk to 1.8, cause it will not compile with a lower level.
I would suggest to change the JDK target level for the whole project to a up-to-date JDK level.
I personally would prefer to use JDK 1.8 for the whole james-project target.
(This maybe should be split into 2 tickets).
Best regards,
Bernd Waibel
Re: AW: Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
Posted by Benoit Tellier <be...@minet.net>.
Le 15/03/2016 14:46, Bernd Waibel a écrit :
> Thanks Benoit,
>
> so: is there anything speaking AGAINST switching to JDK 1.8?
> Yes. The OpenJDK versions delivered with Ubuntu 14.04 (LTS) is only JDK7.
> So you need to install a JDK8 "by hand" on current running linux machines.
> This may vote against JDK8.
Note that there are docker containers to avoid such a situation : the
only dependency is docker with such a solution, and there is no need to
install a JDK8 by hand if docker is already installed.
I think it can be a workaround for such a problem.
>
> We always are using the Oracle versions, due to other limitations in the crypto engine, but that is "our problem", not a rule for other users. It is not an act to install.
>
> Deciding to switch a JDK level is not done with every release.
> So this switch maybe the defined JDK for the next years.
>
> For information: The official End-of-life matrix is:
> V GA End Notify End Updates
> 6 Dec 2006 Feb 2011 Feb 2013
> 7 Jul 2011 Mar 2014 Apr 2015
> 8 Mar 2014 TBD Sep 2017*
> See: http://www.oracle.com/technetwork/java/eol-135779.html#Java6-end-public-updates
> There is no longer premium support offered by Microsoft for 1.6. So this is not used often.
> There is premium support for 1.7, so this may be used by some customers.
>
> So my vote would be: JDK 8.
>
> Greetings,
> Bernd
>
> -----Ursprüngliche Nachricht-----
> Von: Benoit Tellier [mailto:btellier@linagora.com]
> Gesendet: Dienstag, 15. März 2016 03:12
> An: server-dev@james.apache.org
> Betreff: Re: Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
>
> Hi Bernd,
>
> A huge +1, I would be so happy to see JDK 1.8 used everywhere in James.
> It would allow us to write readable code based on streams everywhere.
>
> For your information, some modules uses a JDK 1.8 :
>
> - backends/cassandra
> - mailbox/cassandra
> - mailbox/elasticsearch
> - server/data/data-cassandra
> - server/protocols/jmap*
> - mpt/impl/imap-mailbox/cassandra
> - mpt/impl/imap-mailbox/elasticsearch
> - mpt/impl/imap-mailbox/external
> - server/container/cassandra-guice
> - mpt/impl/smtp
>
> You will find in the POM of those project :
>
> - a build desactivation for JDK older than 1.8. An empty jar will be
> produced
> - all the project dependencies included for JDK >= 1.8
> - disable animal sniffer for JDK >= 1.8
>
> So lambas are never used with an other JDK than 1.8. But it means having
> a JDK < 1.8 you can not run ElasticSearch, Cassandra, JMAP, and Guice
> stuff.
>
> By the way, Linagora CI triggers two builds upon our pull requests :
>
> - One in Java 6 + Spring
> - One in Java 8 + Guice
>
> I would love to have some POM simplification, and build simplification here.
>
> Benoit
>
> Le 14/03/2016 19:59, Bernd Waibel a écrit :
>> Hello together,
>>
>> I am trying to compile "james-project", but I am just following Maven errors.
>>
>> At this point I did find something, I am not sure if I interpret this correctly.
>> The Cassandra implementation uses Lambdas. E.g. in CassandraTableManager.
>>
>> The pom.xml of "james-project" does define a target jdk of 1.6:
>> <target.jdk>1.6</target.jdk>
>> The pom.xml of backends-common and the pom.xml of backends-cassandra do not redefine the target.jdk to another level.
>>
>> Lamdas (and the used stream objects) are new in JDK 1.8, so a JDK Target of 1.6 for Cassandra do not seem to be meaningful.
>> The Cassandra project should redefine the target.jdk to 1.8, cause it will not compile with a lower level.
>>
>> I would suggest to change the JDK target level for the whole project to a up-to-date JDK level.
>> I personally would prefer to use JDK 1.8 for the whole james-project target.
>>
>> (This maybe should be split into 2 tickets).
>>
>>
>> Best regards,
>>
>> Bernd Waibel
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
AW: Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
Posted by Bernd Waibel <BW...@intarsys.de>.
Thanks Benoit,
so: is there anything speaking AGAINST switching to JDK 1.8?
Yes. The OpenJDK versions delivered with Ubuntu 14.04 (LTS) is only JDK7.
So you need to install a JDK8 "by hand" on current running linux machines.
This may vote against JDK8.
We always are using the Oracle versions, due to other limitations in the crypto engine, but that is "our problem", not a rule for other users. It is not an act to install.
Deciding to switch a JDK level is not done with every release.
So this switch maybe the defined JDK for the next years.
For information: The official End-of-life matrix is:
V GA End Notify End Updates
6 Dec 2006 Feb 2011 Feb 2013
7 Jul 2011 Mar 2014 Apr 2015
8 Mar 2014 TBD Sep 2017*
See: http://www.oracle.com/technetwork/java/eol-135779.html#Java6-end-public-updates
There is no longer premium support offered by Microsoft for 1.6. So this is not used often.
There is premium support for 1.7, so this may be used by some customers.
So my vote would be: JDK 8.
Greetings,
Bernd
-----Ursprüngliche Nachricht-----
Von: Benoit Tellier [mailto:btellier@linagora.com]
Gesendet: Dienstag, 15. März 2016 03:12
An: server-dev@james.apache.org
Betreff: Re: Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
Hi Bernd,
A huge +1, I would be so happy to see JDK 1.8 used everywhere in James.
It would allow us to write readable code based on streams everywhere.
For your information, some modules uses a JDK 1.8 :
- backends/cassandra
- mailbox/cassandra
- mailbox/elasticsearch
- server/data/data-cassandra
- server/protocols/jmap*
- mpt/impl/imap-mailbox/cassandra
- mpt/impl/imap-mailbox/elasticsearch
- mpt/impl/imap-mailbox/external
- server/container/cassandra-guice
- mpt/impl/smtp
You will find in the POM of those project :
- a build desactivation for JDK older than 1.8. An empty jar will be
produced
- all the project dependencies included for JDK >= 1.8
- disable animal sniffer for JDK >= 1.8
So lambas are never used with an other JDK than 1.8. But it means having
a JDK < 1.8 you can not run ElasticSearch, Cassandra, JMAP, and Guice
stuff.
By the way, Linagora CI triggers two builds upon our pull requests :
- One in Java 6 + Spring
- One in Java 8 + Guice
I would love to have some POM simplification, and build simplification here.
Benoit
Le 14/03/2016 19:59, Bernd Waibel a écrit :
> Hello together,
>
> I am trying to compile "james-project", but I am just following Maven errors.
>
> At this point I did find something, I am not sure if I interpret this correctly.
> The Cassandra implementation uses Lambdas. E.g. in CassandraTableManager.
>
> The pom.xml of "james-project" does define a target jdk of 1.6:
> <target.jdk>1.6</target.jdk>
> The pom.xml of backends-common and the pom.xml of backends-cassandra do not redefine the target.jdk to another level.
>
> Lamdas (and the used stream objects) are new in JDK 1.8, so a JDK Target of 1.6 for Cassandra do not seem to be meaningful.
> The Cassandra project should redefine the target.jdk to 1.8, cause it will not compile with a lower level.
>
> I would suggest to change the JDK target level for the whole project to a up-to-date JDK level.
> I personally would prefer to use JDK 1.8 for the whole james-project target.
>
> (This maybe should be split into 2 tickets).
>
>
> Best regards,
>
> Bernd Waibel
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
Re: Use of Lambdas in Cassandra with target.jdk 1.6 [unsigned]
Posted by Benoit Tellier <bt...@linagora.com>.
Hi Bernd,
A huge +1, I would be so happy to see JDK 1.8 used everywhere in James.
It would allow us to write readable code based on streams everywhere.
For your information, some modules uses a JDK 1.8 :
- backends/cassandra
- mailbox/cassandra
- mailbox/elasticsearch
- server/data/data-cassandra
- server/protocols/jmap*
- mpt/impl/imap-mailbox/cassandra
- mpt/impl/imap-mailbox/elasticsearch
- mpt/impl/imap-mailbox/external
- server/container/cassandra-guice
- mpt/impl/smtp
You will find in the POM of those project :
- a build desactivation for JDK older than 1.8. An empty jar will be
produced
- all the project dependencies included for JDK >= 1.8
- disable animal sniffer for JDK >= 1.8
So lambas are never used with an other JDK than 1.8. But it means having
a JDK < 1.8 you can not run ElasticSearch, Cassandra, JMAP, and Guice
stuff.
By the way, Linagora CI triggers two builds upon our pull requests :
- One in Java 6 + Spring
- One in Java 8 + Guice
I would love to have some POM simplification, and build simplification here.
Benoit
Le 14/03/2016 19:59, Bernd Waibel a écrit :
> Hello together,
>
> I am trying to compile "james-project", but I am just following Maven errors.
>
> At this point I did find something, I am not sure if I interpret this correctly.
> The Cassandra implementation uses Lambdas. E.g. in CassandraTableManager.
>
> The pom.xml of "james-project" does define a target jdk of 1.6:
> <target.jdk>1.6</target.jdk>
> The pom.xml of backends-common and the pom.xml of backends-cassandra do not redefine the target.jdk to another level.
>
> Lamdas (and the used stream objects) are new in JDK 1.8, so a JDK Target of 1.6 for Cassandra do not seem to be meaningful.
> The Cassandra project should redefine the target.jdk to 1.8, cause it will not compile with a lower level.
>
> I would suggest to change the JDK target level for the whole project to a up-to-date JDK level.
> I personally would prefer to use JDK 1.8 for the whole james-project target.
>
> (This maybe should be split into 2 tickets).
>
>
> Best regards,
>
> Bernd Waibel
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org