Better Faster Lighter Java [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Better Faster Lighter Java [Electronic resources] - نسخه متنی

Justin Gehtland; Bruce A. Tate

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید








4.8 Summary


If you're trying to decouple that service from your
model and you feel like you're standing half-dressed
after pulling a single thread a little too far, take heart. If you
put the effort into building transparency into your application,
you're likely to get where you intended to go, fully
dressed and on time.

Some other decoupling techniques don't go far
enough. Inheriting a service leads to awkward models that are tough
to extend in other ways. Hardwiring services has a place, but it
starts to be limiting as an application grows in scope. New
programming models such as AOP may help you some day, but others
(like heavyweight invasive containers) can kill you.

Instead, if you've got an exceptional need to
decouple a service from your model, strive for transparency.
Effective frameworks seem to be divided across three camps. All have
relative strengths and weaknesses.

Reflection is the tool of choice if you're building
a lightweight transparent service. It's relatively
easy to use and doesn't require any changes to your
build process. The downside is performance but if you
don't overuse it, reflection is fast enough for many
applications.

Enhancement techniques directly modify the byte code in your
application to perform the appropriate task. They do change the build
process, and may theoretically be difficult to debug. In practice,
though, it's a high-performance technique
that's growing in popularity. Some frameworks to
provide persistence, obfuscation, and aspect-oriented weavers all use
byte code enhancement, either at runtime or build time.

Code generators are relatively easy to understand and use. They merge
a template and data to give you working code. Frameworks like XDoclet
use code generation less for transparency than to eliminate
repetition, but you can use other code generation frameworks like
MiddleGen to create services and transparent models, often without
any user intervention beyond creating a few JavaDoc tags or an XML
file.


Use these techniques to build transparent services.
Don't forget that complete transparency can often
burn you, as with CORBA. Instead, create transparent services to
handle coarse-grained interfaces, such as façades, and
fine-grained services, such as your model. Keep an eye firmly fixed
on the future. While AOP languages and environments may still be a
ways off, AOP techniques such as lightweight containers and
interceptors will creep into the mainstream very quickly.

In this chapter, our focus was on using transparency to decouple
services from your model. In the next chapter,
you'll learn to choose the right tool for the job.
It may sound like a trivial detail, but using poor technologies or
abusing good ones has sunk thousands of Java projects.


/ 111