late Proposal: Add C-like preprocessing ability for java language.

rssh at gradsoft.com.ua rssh at gradsoft.com.ua
Tue Mar 31 14:14:31 PDT 2009


Sorry for late, but I was waiting for stars be in correct location for
sending this.

OVERVIEW:

 FEATURE SUMMARY:

Add C-like preproceeding ability to Java language.

 MAJOR ADVANTAGE:

   Possibility implements language extensions, such as sugaring/desugaring,
koffein/dekoffein outside of Sun, fix bugs 4411102, 6439965, 4649007 and many
others from sun bugs database and increase team building importance for Java
programmers by providing ability to any engineer tune life of all team in
night ware. Of course, this possibility exists in current version of JAVA,
but it's too rare used.
Often rewriting of software system from scratch will speed-up economics,
which is important for faster recovery from crisis.

 MAJOR DISADVANTAGE
   Inaccurate usage of this feature can cause producing of unmaintainable
code.

 ALTERNATIVES:

   Use external preprocessing tool.

EXAMPLES

SIMPLE EXAMPLE:

 System.out.println("file is %s, line is %d\n ",__FILE__,__LINE__);

ADVANCED EXAMPLE:

ARM Proposal can be implemented on user level without language changes.

#define TRY(xt,x,y,z) xt x=null; try{      \
                      x=y ;   \
                      z ;     \
                    } finally { \
                      x.close() \
                    } \



TRY(sqlConnection, cn, dataSource.getConnection(), \
      RecordSet rs = \
       cn.evaluateQuery("select * from customers where id=:x"\,2); \
      while(rs.next()) { printRow(rs); } )

will be desugared as
sqlConnection cn=null; try{
  cn = dataSource.getConnection();
  RecordSet rs =
       cn.evaluateQuery("select * from customers where id=:x",2);
      while(rs.next()) { printRow(rs); }
 }finally{
    cn.close();
 }


DETAILS:

 No details required.


COMPILATION:

 No changes to compiler required, all is do on preprocessor level.

TESTING:

 We can reuse tested implelementation of C preporcessor.

LIBRARY SUPPORT:

 It would be good add gcc distribution to java.

REFLECTIVE APIS: None

OTHER CHANGES: None

MIGRATION: None

COMPABILITY
 None


REFERENCES

 http://bugs.sun.com/view_bug.do?bug_id=4165111
 http://bugs.sun.com/view_bug.do?bug_id=4087771
 http://bugs.sun.com/view_bug.do?bug_id=4615070
 http://bugs.sun.com/view_bug.do?bug_id=4215781

IMPLEMENTATION PROTOTYPE URL

See http://gcc.gnu.org
Also exists java-only solutions for embedding
http://www.duo-creative.com/chrisb/jpp/









More information about the coin-dev mailing list