Beyond Java Buzz

home

XML bloat in Java

below is an example from Yaffle, my report writer...

  • what you see below is an XML defined domain specific language
  • its readability is near zero, because XML is not a programming language
  • yet XML offers great declarative capability; Java generally does not...

  • <CustomerReport>
    	<reportTitle>Customer list</reportTitle>
    	<outputClass>com.javazoid.report.format.HtmlJdbcTableFormatter</outputClass>
    	
    	<!-- example user-defined fields -->
    	<userDefined>
    		<downloadable>true</downloadable>
    		<downloadFormatter>org.myorg.reports.MySubclassedCSVFormatter</downloadFormatter>
    	</userDefined>
    
    	<!-- no input parameters for this one -->
    	<inputSpecification/>
    		
    		
    
    	
    	<!-- Define Date -->
    	<dataSpecification>
    		<type>jdbc</type>
    		<connectionClass>com.javazoid.report.demo.HsqlConnection</connectionClass>
    		<connectionMethod>getConnection</connectionMethod>
    		<connectionMethodParameter/>	
    		<sql>select * from customer order by lastname, firstname</sql>
    		
    	</dataSpecification>	
    	
    
    
    		
    	<!-- Formatting -->
    	<formatSpecification>
    		<tableStyle>table</tableStyle>
    
    
    		<rowStyles>
    			<rowStyle>darkRow</rowStyle>	
    			<rowStyle>lightRow</rowStyle>
    				
    		</rowStyles>
    		
    		<columns>
    			
    			<column>
    				<title>Last Name</title>
    				<widthPercent>20</widthPercent>
    				<alignment>left</alignment>
    				<dataName>LASTNAME</dataName>
    			</column>
    			
    			<column>
    				<title>First Name</title>
    				<widthPercent>20</widthPercent>
    				<alignment>left</alignment>
    				<dataName>FIRSTNAME</dataName>
    			</column>
    			
    			
    			<column>
    				<title>City</title>
    				<widthPercent>20</widthPercent>
    				<alignment>center</alignment>
    				<dataName>CITY</dataName>
    			</column>
    		</columns>
    			
    		
    		<summary>
    			<summaryCaption>Count of Customers</summaryCaption>
    			<summaryColumn>CITY</summaryColumn>
    			<summaryFunction>com.javazoid.report.function.Count</summaryFunction>
    			<summaryFormatPattern>#,###</summaryFormatPattern>	
    		</summary>	
    	</formatSpecification>
    	
    </CustomerReport>