<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6592079322612523554</id><updated>2011-07-07T20:06:33.594-04:00</updated><title type='text'>ByteML</title><subtitle type='html'>- Bytecode-XML interoperability language</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://byteml.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Open Source Programmer</name><uri>http://www.blogger.com/profile/06081166832182857672</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-8220359139918136138</id><published>2008-03-22T18:34:00.000-04:00</published><updated>2008-03-25T19:32:18.341-04:00</updated><title type='text'>Overview</title><content type='html'>&lt;b&gt;&lt;i&gt;ByteML&lt;/i&gt;&lt;/b&gt; is a java bytecode/xml intreroperability framework mainly targeted at developers. This utility is issued under the GNU GPL (see &lt;a href="http://byteml.blogspot.com/2008/03/license.html"&gt;license&lt;/a&gt;).&lt;br /&gt;&lt;h3&gt;Features:&lt;br /&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Converts a .class file to a XML file (returned as a DOM document).&lt;br /&gt;&lt;/li&gt;&lt;li&gt; A custom SAX event-based xml code translator is available to write to outputstreams.   &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-8220359139918136138?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/8220359139918136138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/8220359139918136138'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/overview.html' title='Overview'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-376078107781015995</id><published>2008-03-20T18:38:00.003-04:00</published><updated>2008-07-13T11:51:53.580-04:00</updated><title type='text'>Changelog</title><content type='html'>&lt;ul style="font-family: arial;"&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;0.2 (Nov 12 2002)&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt; Bug fix related to invokeinterface and iinc_w fixed in Class2Xml  &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;0.1 ( Nov 9 2002):&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Initial Revision&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: normal;font-family:times new roman;" &gt;&lt;span style="font-family:times new roman;"&gt; &lt;/span&gt;&lt;ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-376078107781015995?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/376078107781015995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/376078107781015995'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/changelog.html' title='Changelog'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-2123118865961550690</id><published>2008-03-20T18:38:00.001-04:00</published><updated>2008-03-25T19:30:54.276-04:00</updated><title type='text'>Download</title><content type='html'>Download the latest binaries from the sourceforge project page, as below&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=62864&amp;amp;package_id=64774&amp;amp;release_id=298652"&gt;Latest Release&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To see a list of all file releases of the project, follow this link - &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=62864"&gt;All File Releases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-2123118865961550690?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/2123118865961550690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/2123118865961550690'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/download.html' title='Download'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-1766520083536053380</id><published>2008-03-20T18:37:00.001-04:00</published><updated>2008-03-25T19:31:31.494-04:00</updated><title type='text'>License</title><content type='html'>This is issued under GNU GPL. You are free to use this for your research purposes and non-commercial applications only.&lt;br /&gt;&lt;br /&gt;Here is the BibTeX entry, you can use to cite the same.&lt;br /&gt;&lt;pre&gt;@UNPUBLISHED{byteml,&lt;br /&gt; author = {Karthik Kumar Arun Kumar},&lt;br /&gt; title = {ByteML - Bytecode Markup Language},&lt;br /&gt; note = {Bytecode Markup Language is a JVM - XML interoperability framework},&lt;br /&gt; month = {November},&lt;br /&gt; year = {2002},&lt;br /&gt; owner = {Karthik Kumar Arun Kumar},&lt;br /&gt; keywords = {ByteML},&lt;br /&gt; url = {http://byteml.sourceforge.net},&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-1766520083536053380?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/1766520083536053380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/1766520083536053380'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/license.html' title='License'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-8130407953431557963</id><published>2008-03-20T18:35:00.008-04:00</published><updated>2009-07-14T11:50:43.554-04:00</updated><title type='text'>FAQ</title><content type='html'>&lt;h4&gt; What is this software ? Who are the target audience of this software ? &lt;/h4&gt;This is a java  bytecode - XML interoperability framwork.&lt;br /&gt;&lt;br /&gt;  Java Developers who want to integrate information serialized information of .class files with their applications and want to transport it across the wire.&lt;br /&gt;&lt;h4&gt; I want to convert my class file to the ByteML document for examining the same. How do I do it ? &lt;/h4&gt;Check out the shell script Class2ByteML.sh in the bin directory.&lt;br /&gt;A sample run is shown as below.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:bash"&gt;$ ./Class2ByteML.sh ../test/input/Hello.class Hello.xml&lt;br /&gt;&lt;/pre&gt;This would generate the ByteML file corresponding to the java class file.&lt;br /&gt;&lt;h4&gt;How do I build the entire source tree ? &lt;/h4&gt;You may need the &lt;a href="http://ant.apache.org/"&gt;Ant build tool&lt;/a&gt; to build the entire tree. After having installed Ant in your system, invoke the ant target as follows:&lt;br /&gt;&lt;pre class="brush:bash"&gt;   $ ant makejar  &lt;/pre&gt;to compile all the sources&lt;br /&gt;&lt;h4&gt; I am getting an error: Major Version (49) Minor Version(0) not supported ? &lt;/h4&gt;The class file parser has been written for JVM target version 1.3 and below.&lt;br /&gt;&lt;br /&gt; Most probably the class file you are dealing with might have been decompiled with a more recent version of the java compiler.&lt;br /&gt; In case you have access to the source, you can compile it for the target machine as follows.&lt;br /&gt;&lt;pre class="brush:bash"&gt;   $ javac -source 1.3 -target 1.3 MyJavaSource.java &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-8130407953431557963?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/8130407953431557963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/8130407953431557963'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/faq.html' title='FAQ'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6592079322612523554.post-5167349066083225664</id><published>2008-03-20T18:35:00.004-04:00</published><updated>2009-07-14T11:48:44.320-04:00</updated><title type='text'>Demonstration</title><content type='html'>As an example consider the following Java source file.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;&lt;br /&gt;public class Hello  {&lt;br /&gt;   public static void main(String [] args) {&lt;br /&gt;       System.out.println("Hello World");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ByteML corresponding to the class file , Hello.xml, looks as follows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;?xml version='1.0' encoding='UTF-8' ?&gt;&lt;br /&gt;&lt;byteml version="0.5"&gt;&lt;br /&gt;    &lt;class name="Hello" qualifier="public class" superclass="java.lang.Object" type="class"&gt;&lt;br /&gt;        &lt;constantpool&gt;&lt;br /&gt;            &lt;constantpoolentry index="1" ptr1="6" ptr2="15" tag="TAG_METHODREF"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="2" ptr1="16" ptr2="17" tag="TAG_FIELDREF"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="3" ptr1="18" tag="TAG_STRING"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="4" ptr1="19" ptr2="20" tag="TAG_METHODREF"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="5" ptr1="21" tag="TAG_CLASS"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="6" ptr1="22" tag="TAG_CLASS"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="7" tag="TAG_UTF8" value="&amp;lt;init&amp;gt;"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="8" tag="TAG_UTF8" value="()V"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="9" tag="TAG_UTF8" value="Code"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="10" tag="TAG_UTF8" value="LineNumberTable"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="11" tag="TAG_UTF8" value="main"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="12" tag="TAG_UTF8" value="([Ljava/lang/String;)V"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="13" tag="TAG_UTF8" value="SourceFile"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="14" tag="TAG_UTF8" value="Hello.java"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="15" ptr1="7" ptr2="8" tag="TAG_NAMETYPE"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="16" ptr1="23" tag="TAG_CLASS"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="17" ptr1="24" ptr2="25" tag="TAG_NAMETYPE"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="18" tag="TAG_UTF8" value="Hello World"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="19" ptr1="26" tag="TAG_CLASS"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="20" ptr1="27" ptr2="28" tag="TAG_NAMETYPE"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="21" tag="TAG_UTF8" value="Hello"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="22" tag="TAG_UTF8" value="java/lang/Object"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="23" tag="TAG_UTF8" value="java/lang/System"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="24" tag="TAG_UTF8" value="out"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="25" tag="TAG_UTF8" value="Ljava/io/PrintStream;"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="26" tag="TAG_UTF8" value="java/io/PrintStream"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="27" tag="TAG_UTF8" value="println"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;            &lt;constantpoolentry index="28" tag="TAG_UTF8" value="(Ljava/lang/String;)V"&gt;&lt;br /&gt;            &lt;/constantpoolentry&gt;&lt;br /&gt;        &lt;/constantpool&gt;&lt;br /&gt;        &lt;interfacelist&gt;&lt;br /&gt;        &lt;/interfacelist&gt;&lt;br /&gt;        &lt;fieldlist&gt;&lt;br /&gt;        &lt;/fieldlist&gt;&lt;br /&gt;        &lt;methodlist&gt;&lt;br /&gt;            &lt;method name="&amp;lt;init&amp;gt;" qualifier="1" type="void"&gt;&lt;br /&gt;                &lt;arglist&gt;&lt;br /&gt;                &lt;/arglist&gt;&lt;br /&gt;                &lt;methodinfo maxLocals="1" maxStack="1"&gt;&lt;br /&gt;                &lt;/methodinfo&gt;&lt;br /&gt;                &lt;bytecodes&gt;&lt;br /&gt;                    &lt;opcode index="0" name="aload_0"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                    &lt;opcode index="1" name="invokespecial" pool_pointer="1"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                    &lt;opcode index="4" name="return"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                &lt;/bytecodes&gt;&lt;br /&gt;            &lt;/method&gt;&lt;br /&gt;            &lt;method name="main" qualifier="9" type="void"&gt;&lt;br /&gt;                &lt;arglist&gt;&lt;br /&gt;                    &lt;arg type="java.lang.String"&gt;&lt;br /&gt;                    &lt;/arg&gt;&lt;br /&gt;                &lt;/arglist&gt;&lt;br /&gt;                &lt;methodinfo maxLocals="1" maxStack="2"&gt;&lt;br /&gt;                &lt;/methodinfo&gt;&lt;br /&gt;                &lt;bytecodes&gt;&lt;br /&gt;                    &lt;opcode index="0" name="getstatic" pool_pointer="2"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                    &lt;opcode index="3" name="ldc" pool_pointer="3"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                    &lt;opcode index="5" name="invokevirtual" pool_pointer="4"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                    &lt;opcode index="8" name="return"&gt;&lt;br /&gt;                    &lt;/opcode&gt;&lt;br /&gt;                &lt;/bytecodes&gt;&lt;br /&gt;            &lt;/method&gt;&lt;br /&gt;        &lt;/methodlist&gt;&lt;br /&gt;    &lt;/class&gt;&lt;br /&gt;&lt;/byteml&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The java disassembly code (from the 'javap' utility) is shown as follows.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:bash"&gt;&lt;br /&gt;$ javap -c Hello&lt;br /&gt;Compiled from "Hello.java"&lt;br /&gt;public class Hello extends java.lang.Object{&lt;br /&gt;public Hello();&lt;br /&gt; Code:&lt;br /&gt;  0:   aload_0&lt;br /&gt;  1:   invokespecial   #1; //Method java/lang/Object."&amp;lt;init&amp;gt;":()V&lt;br /&gt;  4:   return&lt;br /&gt;&lt;br /&gt;public static void main(java.lang.String[]);&lt;br /&gt; Code:&lt;br /&gt;  0:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;&lt;br /&gt;  3:   ldc     #3; //String Hello World&lt;br /&gt;  5:   invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V&lt;br /&gt;  8:   return&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6592079322612523554-5167349066083225664?l=byteml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/5167349066083225664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6592079322612523554/posts/default/5167349066083225664'/><link rel='alternate' type='text/html' href='http://byteml.blogspot.com/2008/03/demonstration.html' title='Demonstration'/><author><name>Open Source Programmer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
