Synthetic variable or method in Java

While working I found one keyword Synthetic variable or method in java. Never heard of this before.I found some information on net and thought of sharing knowledge with everyone. If you want add something in this ,it would be really great.

“Synthetic” attribute means a variable introduced by the compiler that doesn’t appear in the actual code. It is a compiler-created field that links a local inner class to a block’s local variable or reference type parameter. Synthetic members are only meant to be accessed by trusted code generated by the compiler. Compiler synthesizes certain hidden fields and methods in order to implement the scoping of names. Any constructs introduced by the compiler that do not have a corresponding construct in the source code must be marked as synthetic, except for default constructors and the class initialization method.[1]
it means when there is a field or method introduced into a class file by the compiler and we can not find the primary declaration in the source file, it will marked as synthetic
A synthetic field pointing to the outermost enclosing instance is named this$0. The next-outermost enclosing instance is this$1, and so forth. All these synthetic fields are initialized by constructor parameters, which have the same names as the fields they initialize. If one of the parameters is the innermost enclosing instance, it is the first. All such constructor parameters are deemed to be synthetic. If the compiler determines that the synthetic field’s value is used only in the code of the constructor, it may omit the field itself, and use only the parameter to implement variable references. A non-private final synthetic method which grants access to a private member or constructor has a name of the form access$N, where N is a decimal numeral.
when an inner class has access to an instance of an outer class, this is implemented by creating a synthetic field in the inner class, generally named this$0, which holds a reference to the outer class instance.
According to Java 6 spec – Any constructs introduced by the compiler that do not have a corresponding construct in the source code must be marked as synthetic, except for default constructors and the class initialization method.

Nested classes are sometimes implemented using synthetic fields and synthetic contructors, e.g. an inner class may use a synthetic field to save a reference to its outer class instance, and it may generate a synthetic constructor to set that field correctly.
Synthetic members are how the compiler deals with the fact that nested classes are actually compiled into top-level classes
if a static member type uses a private member of its containing type (or vice versa), the compiler generates synthetic non-private access methods and converts the expressions that access the private methods into expressions that invoke these specially generated methods. These methods are given the default package access which is sufficient, as the member class and its containing class are guaranteed to be in the same package.

Synthetic class is derived from Attribute and declares this class as `synthetic’, i.e., it needs special handling. It is instantiated from the Attribute.readAttribute() method.
According to the JVM Spec: “A class member that does not appear in the source code must be marked using a Synthetic attribute.” Also, “The Synthetic attribute was introduced in JDK release 1.1 to support nested classes and interfaces.
We can check using isSynthetic() method whether variable is synthetic variable or not.
Examples include a static variable to hold a Class object if you’ve used the “Integer.class” notation, and the member variable in a non-static inner class that holds a reference to the enclosing class. Besides the fact that they are inserted by the compiler

See the java doc on – http://bcel.sourceforge.net/docs/de/fub/bytecode/classfile/Synthetic.html

pimp it

Introduction of DOJO

Dojo is the Open Source JavaScript Toolkit. It is tool for constructing dynamic web
user interfaces. Dojo offers various widgets, utilities, higher IO (AJAX) abstraction etc.It is based on HTML and javascript. Dojo ups abstraction layer in a higher level. Dojo is sometimes advertised as AJAX
framework. It is able to make AJAX requests with Dojo But the technique of binding is under
the abstraction layer that Dojo has. Even if Dojo is nice, beautiful etc, it is quite heavy

We can one use Dojo by :-
1. Include package
2. use widget/utility/…

Package System
• Dojo consists of JavaScript files
• Package system takes care that only needed
files are included
• Each JavaScript file can be named as
package
dojo.provide(dojo.string);
• By that name the package can be taken in
use
dojo.require(dojo.string);
One has not to remember any file or
directory names
• Only dojo.js has to be included into HTML
document
• That file takes care of initialization of Dojo
• There is a couple of pre packaged builds that
consist of different kinds of packages
e.g. Widget, event or IO builds.

DOJO have following Language Libraries
• dojo.lang.*
• Wrappers for common idioms
• Functional programming APIs
• For Example
– dojo.lang.forEach
– dojo.lang.map
– dojo.lang.assert

Widget toolkit-

• Widget toolkit is also a very noticeable part of
Dojo toolkit
• Widget is a user interface object that has a
layout and some properties
• In Dojo widgets are HTML+CSS bound by
JavaScript
• Dojo has lots of useful widgets
e.g. Tabs, sorting table, dialogs

<script>
dojo.require(”dojo.widget.Editor2”);
</script>
<!-- ... -->
<textarea dojoType=”Editor2”>
...
</textarea>

For more info – www.dojotoolkit.org

pimp it

Thumbs Up

Introduction of Castor in Java

Castor is an open source data binding framework for moving data from XML to Java programming language objects and from Java to databases. It’s the shortest path between Java objects, XML documents and relational tables. Castor provides Java-to-XML binding, Java-to-SQL persistence, and more.

Castor is made up of (independent) modules as follows:– Castor XML
– Castor XML – Code generator
– Castor JDO – Persistence framework
– Castor JDO – DDL generator
– Additional tools
– Integration with other frameworks
Castor XML
XML data binding framework to bind XML artefacts to Java objects and vice versa.
Castor XML code generator
Code generator that generates Java source code from XML Schema information.
Castor JDO
Java persistence framework to bind Java objects to RDBMS tables. Castor JDO (Java Data Objects) is an open source, 100 percent Java data binding framework. Initially released in December 1999, Castor JDO was one of the first open source data binding frameworks available. Since that time, the technology has come a long way.

Castor JDO DDL generator
Generates DDL statements from JDO mapping files.
Castor is currently integrated with the following frameworks or has support for being integrated:
Spring ORM support for Castor
– Spring OXM for Castor
– Spring XML artifacts
– Web Service toolkits
– Apache Cocoon (Castor transformer)
– extendedXML module for Mule, offering enhanced XML-transformation support for Mule, using Castor

You can find Castor Api doc on – http://www.jdocs.com/castor/1.0.1/overview-summary.html
More information you can find on – http://www.castor.org/

pimp it