[Javalist] Java 8

Zsombor gzsombor at gmail.com
2014. Már. 20., Cs, 21:11:30 CET


Alaposabban megnézve, hogy mi történik a háttérben, valóban van némi VM
mágia, invokedynamic-sal, amivel meg tudják spórolni, hogy a VM direktben
csináljon egy functional interfacet egy privát függvényből - amivé a lamdba
kifejezés fordul. S úgy tűnik, hogy a javac nem tud 7-es bytecode-ra
fordítani, ha vannak lambdák is a kódban.
 A függvény nevekkel olyan nagy probléma - ha jól értem - nincsen. Mivel ez
mindig már fordítás időben kiderül, olyat ugyanis nem lehet írni, hogy

public void sum (Collection<X> xs, (X) -> int func) {
  int result = 0;
  for (X x : xs) {
    result += func.*apply*(x);
  }
  return result;
}

hanem muszáj ilyet:

interface Summér<X> {
  int szamol(X param);
}

public void sum(Collection<X> xs, Summér<X> func) {
  int result = 0;
  for (X x : xs) {
    result += func.*szamol*(x);
  }
  return result;
}

S amikor hívjuk, akkor a fordító elég okos, hogy a megfelelő tipussá
konvertálja ezt:
 sum(strings, (String s) -> s.length());


Vagy valamiről lemaradtam :)



2014-03-20 20:41 GMT+01:00 Peter Verhas <peter at verhas.com>:

> Annyi a specialitás, hogy nem lehet tudni, hogy mi a neve a metódusnak.
> Lambadánál ugye nincs is, az interface meg bármilyen nevet definiálhat,
> csak ne legyen több. Még nem mélyedtem el benne munka mellett (ahol még
> mindig J6) mert most még azt nézem amiről szerdára a blogot írom. De ami
> késik az nem a közelben gyártott óra.
>
> --
> Dipl. Ing. Peter Verhas
> peter at verhas.com
> +41791542095
> skype: verhas
>
>
>
>
>
>
> On 2014.03.20., at 20:35, Zsombor <gzsombor at gmail.com> wrote:
>
> A lambda kifejezések nem új nyelvi elemekké fordulnak, hanem kutya
> közönséges objektumokká, amik egy funkcionális interfészt implementálnak.
> Önmagában emiatt még simán lehetne futtatni régebbi VM-eken is.
>
> Üdv
>  Zs
>
>
> 2014-03-20 19:44 GMT+01:00 Gábor Garami <gabor.garami at hron.me>:
>
>> Ha es amennyiben nem tartalmaz a kod olyan nyelvi elemeket, amiknek
>> nincs korabbi JVM-beli megfelelojuk. Es a closure-t (lambda kifejezes,
>> hivd ahogy akarod) eleg korulmenyes portolni kodszinten korabbi VM-re
>> - ha lehet egyaltalan.
>> Garami Gábor
>> E-mail: gabor.garami at hron.me
>> Tel: +36 20 235 9621
>> MSN: hrgy at vipmail.hu
>> Skype: hron84
>>
>>
>> 2014-03-20 13:46 GMT+01:00 Peter Verhas <peter.verhas at gmail.com>:
>> > Szerintem a Java 8-ban irt library is fordithato korábbival kompatibilis
>> > JVM-re. Nem így van?
>> >
>> >
>> > On Thu, Mar 20, 2014 at 11:48 AM, auth.gabor at javaforum.hu
>> > <auth.gabor at javaforum.hu> wrote:
>> >>
>> >> Hi,
>> >>
>> >> > Szerintem soha. Hiszen a google nem akar fizetni semmit az Oraclenek
>> a
>> >> > javáért...
>> >>
>> >> Válasszuk (legalább ketté) a dolgot: a JVM fejlesztés nem érinti az
>> >> Android-ot, mert teljesen más a VM, a nyelvi fejlesztésekből pedig azt
>> >> kell megnézni, hogy melyik vehető át a platform széttúrása nélkül. :)
>> >>
>> >> De előbb-utóbb át kell venni a nyelvi elemeket, mert a Lambda miatt
>> nagyon
>> >> sok library ki fog jönni Java8+ kompatibilitási igénnyel, s Android-on
>> az
>> >> eseményvezéreltség miatt nagyon sokat javítanak a kód
>> áttekinthetőségén és
>> >> minőségén a Lambda.
>> >>
>> >> Bye,
>> >> Auth Gábor
>> >>
>> >>
>> >> _______________________________________________
>> >> Javalist mailing list
>> >> Javalist at lists.javaforum.hu
>> >> http://lists.javaforum.hu/mailman/listinfo/javalist
>> >
>> >
>> >
>> > _______________________________________________
>> > Javalist mailing list
>> > Javalist at lists.javaforum.hu
>> > http://lists.javaforum.hu/mailman/listinfo/javalist
>> >
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20140320/ba17dd40/attachment.html>


További információk a(z) Javalist levelezőlistáról