🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
4 messages
4 total messages Started by Jacek Czerwinski Tue, 15 Nov 2011 16:28
Bytecode dla ubogich?
#153126
Author: Jacek Czerwinski
Date: Tue, 15 Nov 2011 16:28
41 lines
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?
#153127
Author: nullpointer
Date: Tue, 15 Nov 2011 17:14
24 lines
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?
#153128
Author: Jacek Czerwinski
Date: Tue, 15 Nov 2011 18:16
34 lines
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?
#153129
Author: nullpointer
Date: Tue, 15 Nov 2011 19:23
9 lines
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