Thread View: pl.comp.lang.java
4 messages
4 total messages
Started by Jacek Czerwinski
Tue, 15 Nov 2011 16:28
Bytecode dla ubogich?
Author: Jacek Czerwinski
Date: Tue, 15 Nov 2011 16:28
Date: Tue, 15 Nov 2011 16:28
41 lines
2323 bytes
2323 bytes
Może kiedyś popełnię serię książek, skoro jest seria "for Dummies".
Takie ćwiczenie intelektualne sobie zadałem z Javy. Coś jak zabawy z
Bytecode, albo class wearing...
jest sobie
class A {
String a;
int /*Integer, obojętne */ b;
};
Domniemajmy jakieś rozsądne public i co trzeba.
Metodą refleksji wydobywam Field[] itp. (Robiłem to wielokrotnie,przez
refleksję np po stringowych nazwach pół, umiem).
Czy i jak dało by się w kilku liniach (tzn nie w olbrzymiej bibliotece)
zrobić dla takiej klasy odpowiednik kodu (który by nie był interpretacją
tablicy), oczywiście klasa A nie jest tu znana (importowana).
A dane;
Xxxxxx.oper(dane.a);
Xxxxxx.oper(dane.b);
Wątki poboczne. Jedno co (trochę) znam, to w okolicy JPA Criteria taki
preprocesor, co generuje nowe klasy z runtime info siostrzane do
zadanej klasy A.
Po co mi to? Nie wiem. Wymyśliłem w samochodzie w korku. Jedna myśl to
coś, co będzie się sprawdzało podczas kompilacji, druga to wydajność.
Trzecia to najpierw automagiczne w zakresie podstawowym działanie
jakiejś biblioteki, potem ręczne korygowanie i rozwój wybranych części.
Użytkowo, idea że może to być jakaś forma perzystencji danych (głośno
myślę, czy mam podejrzeć dobre wzory serializacji???), ale również
automagiczna prezentacja, walidacja a nawet edycja beanów (znów, warto
by zerknąć na beanowe rozwiązania).
Tylko ubzdurałem sobie, przenieść więcej na kompilację, a mniej na
interpretację.
Albo może nie powinienem jeździć po zatkanych ulicach?
Re: Bytecode dla ubogich?
Author: nullpointer
Date: Tue, 15 Nov 2011 17:14
Date: Tue, 15 Nov 2011 17:14
24 lines
1706 bytes
1706 bytes
W dniu 2011-11-15 17:28, Jacek Czerwinski pisze:
> Może kiedyś popełnię serię książek, skoro jest seria "for Dummies".
Uhh, jeśli w tych książkach masz zamiar formułować swoje myśli podobnie
jak w postach na tej grupie, to lepiej od razu daj spokój - nie wróżę Ci
sukcesu.
Żeby nie było, że tylko się czepiam...
To co napisałeś poniekąd robi biblioteka FEST-Reflect
(http://fest.easytesting.org/reflect/apidocs/index.html, w ogóle na tej
stronie jest parę "fajnych" zabawek).
Pozwala on robić np. takie cuda:
String name = field("name").ofType(String.class).in(person).get();
Druga rzecz jaką "wydaje mi się że zrozumiałem" że chcesz zrobić, to
wykonywanie jakiegoś dodatkowego kodu przy kompilacji. I tutaj
stawiałbym na Annotation Processor API (dostępne od wersji 1.6).
Na koniec wracając do tematu posta - gdzie ten bytecode?
--
npe
Re: Bytecode dla ubogich?
Author: Jacek Czerwinski
Date: Tue, 15 Nov 2011 18:16
Date: Tue, 15 Nov 2011 18:16
34 lines
2246 bytes
2246 bytes
W dniu 2011-11-15 18:14, nullpointer pisze:
..
> To co napisałeś poniekąd robi biblioteka FEST-Reflect
> (http://fest.easytesting.org/reflect/apidocs/index.html, w ogóle na tej
> stronie jest parę "fajnych" zabawek).
>
> Pozwala on robić np. takie cuda:
> String name = field("name").ofType(String.class).in(person).get();
Faaaaajneeee. Lubię takie obiektowe uchwyty aby nie wyłuskiwać ciągle po
stringach. W pierwszym kontakcie kolejność tych "wyrażeń kropkowych"
jest zaskakująca, ale nabiera sensu po zrozumieniu. Jak pomyslimy, że
trzeba np. "uogólniony getter do Field" przekazać przez referencję, to
właśnie dobra kolejność.
Właście takich dotykalnych punktów zaczepienia do bytów z 'reflection'
brakuje w oryginalnym API.
W pewnym sensie jest coś w tym kierunku, o jakim gdybałem.
>
> Druga rzecz jaką "wydaje mi się że zrozumiałem" że chcesz zrobić, to
> wykonywanie jakiegoś dodatkowego kodu przy kompilacji. I tutaj
> stawiałbym na Annotation Processor API (dostępne od wersji 1.6).
Wiem, to pracuje przy JPA Criteria API.
>
> Na koniec wracając do tematu posta - gdzie ten bytecode?
Widocznie auto z bytecode pojechało w inną stronę korka ;)
Mam świadomość 'twardy' kod (bez generacji preprocesorem) bazujący na
refleksji nie jest możliwy 'w realu', ale w/w konkretyzacje to już
trochę spełniają te wizje.
Re: Bytecode dla ubogich?
Author: nullpointer
Date: Tue, 15 Nov 2011 19:23
Date: Tue, 15 Nov 2011 19:23
9 lines
1170 bytes
1170 bytes
Trochę poza głównym nurtem dyskusji, ale zerknij jeszcze na to: http://www.eclipse.org/Xtext/xtend/ Eclipse próbuje "uprościć javę", może jest tam coś, co uprości odwoływanie się do pól/getterów/setterów (nie wiem, nie zgłębiałem tego bardziej, czeka na jakiś wolny wieczór ;)) -- npe
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads