<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://72.14.177.54/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://72.14.177.54/Java4C/?feed=atom&amp;target=91.54.100.91&amp;title=Special%3AContributions</id>
		<title>Java4c - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://72.14.177.54/Java4C/?feed=atom&amp;target=91.54.100.91&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://72.14.177.54/Java4C/Special:Contributions/91.54.100.91"/>
		<updated>2026-04-06T11:00:40Z</updated>
		<subtitle>From Java4c</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://72.14.177.54/Java4C/Components_of_vishia-Java</id>
		<title>Components of vishia-Java</title>
		<link rel="alternate" type="text/html" href="http://72.14.177.54/Java4C/Components_of_vishia-Java"/>
				<updated>2011-02-25T18:56:27Z</updated>
		
		<summary type="html">&lt;p&gt;91.54.100.91:&amp;#32;first&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
vishia-Java is a tree of Java-files in the package-structure ''org/vishia/stuff''. All files are written by Hartmut Schorrig, www.vishia.org. They are used in some applications in profession too (with second license model). It is a conglomeration of different things, of course.&lt;br /&gt;
&lt;br /&gt;
The usage of all files as jar-library if only a few files are needed - it isn't optimal:&lt;br /&gt;
* The usage as library will be proper, if an extrinsic application will use them as it is.&lt;br /&gt;
* If one of developers uses a component in another self-programmed application, it is self-evident to improve the used component with the challenges of the application. In that case the source should be present to check, change and improve.&lt;br /&gt;
* But on the other hand, if an extrinsic application should use that components proper, it should be well tested in a defined environment. A conglomeration can't be tested well enough.&lt;br /&gt;
&lt;br /&gt;
Therefore that Java-sources are separated in some components. Any of the named component is available as a bazaar archive to work with sources. Any of this components are available as a download-file with some test environments as a application - or some test-Java-files exist.&lt;br /&gt;
&lt;br /&gt;
This components are presented in the next chapters:&lt;br /&gt;
&lt;br /&gt;
==srcJava_ZBNF==&lt;br /&gt;
* distribution on [[http://sf.net/projects/zbnf sf.net/projects/zbnf]]&lt;br /&gt;
* bazaar-archive on [[https://launchpad.net/zbnf/srcjava.zbnf launchpad.net/zbnf/srcjava.zbnf]]&lt;br /&gt;
* description, home-site on [[http://www.vishia.org/ZBNF www.vishia.org/ZBNF]]&lt;br /&gt;
Content of the distribution: &lt;br /&gt;
* The ZBNF-Parser with this Java-soruce is able to use discrete to convert plain-text but well-syntactical files into XML.&lt;br /&gt;
* The Java-sources includes a tool ''Header2Reflection'' which translates C/C++-headerfiles to C-files, which represents reflection-information about the data structures. It is used in a ''ReflectPro''-suite.&lt;br /&gt;
* A ''Zmake''-Tool is assiciated there. It converts simple make-prescripts to [[http://en.wikipedia.org/wiki/Apache_Ant ANT]]-make-files.  &lt;br /&gt;
&lt;br /&gt;
Further usage:&lt;br /&gt;
* The ZBNF is used in almost all applications of the author. It is because the applications translates some texts (for example Java2C), it needs config-files (GUI) etc.&lt;br /&gt;
&lt;br /&gt;
Included:&lt;br /&gt;
* A commandline calling argument preparer is included in the srcJava_ZBNF-package between it is the core-package of all applications.&lt;br /&gt;
* Some util-components are included.&lt;br /&gt;
* A MessageDispatcher which separates output messages (logs, able to use for embedded applications too) is contained there.&lt;br /&gt;
&lt;br /&gt;
==vishiaJava_Util==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==vishiaJava_Java2C==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==vishiaJava_GUI==&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>91.54.100.91</name></author>	</entry>

	<entry>
		<id>http://72.14.177.54/Java4C/Component</id>
		<title>Component</title>
		<link rel="alternate" type="text/html" href="http://72.14.177.54/Java4C/Component"/>
				<updated>2011-02-25T18:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;91.54.100.91:&amp;#32;links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Components of vishia-Java]]&lt;br /&gt;
* [[Components of CRuntimeJavalike]]&lt;br /&gt;
&lt;br /&gt;
==Components and modules, re-using==&lt;br /&gt;
&lt;br /&gt;
A software should consist of more as one component. Each component should be able to describe, program and test independent of the application which uses it. A component may be able to use in several applications. Then it is reuseable.&lt;br /&gt;
&lt;br /&gt;
Modules are the finer granularity inside components or inside the core of the application. Each module should be able to describe, program and test independently too. Modules may be one C/h-file or a package in Java or some related files. &lt;br /&gt;
&lt;br /&gt;
A class in ObjectOrientation is the more finer granularity inside modules. A class in the C-programming is a logical coherence between one data structure and related subroutines. One class may be presented exactly with one source-file.&lt;br /&gt;
&lt;br /&gt;
==Dependencies between components, modules, classes==&lt;br /&gt;
&lt;br /&gt;
If another class is used inside a class, it depends on it. Formally it depends on the signature of the methods of the class. Really the functionality depends on the functionality of the called methods.&lt;br /&gt;
&lt;br /&gt;
For a independent test of a class, module or component it may be necessary to abstract the functionality of the depending stuff. The behavior of the depending stuff should be replaced by a simulation or emulation.&lt;br /&gt;
&lt;br /&gt;
There are '''horizontal and vertical dependencies''': If a class/module/component can be created, described and tested independent on another class/module/component, it is deeper in vertical or parallel in horizontal layer. If a class/module/component needs another one, it is above that in vertical layer. ''It needs'' means, in the real application it is associated to it and calls some methods from there. For the independently test all needed classes/modules/components may be able to replace.&lt;br /&gt;
&lt;br /&gt;
===Interfaces as dependency-breaker===&lt;br /&gt;
&lt;br /&gt;
There is a problem: Module_A needs some methods from Module_B and on the other hand Module_B needs some things from Module_A. Both modules are parallel in layer, but there are not able to develop and test independently. &lt;br /&gt;
&lt;br /&gt;
Either the both modules are not two separated modules, the functionality should be combined in one module. - Or it should be separated using interfaces.&lt;br /&gt;
&lt;br /&gt;
The ''interface'' is a language-element of Java. It defines methods with its signature, but without implementation. The description, &amp;quot;''what should the method do, which argument values are expectable, meaning of the return value''&amp;quot; belongs to the method anyway. In C++ interfaces are able to create in a similar kind as Java. It is a class with only virtual abstract methods and without any implementation:&lt;br /&gt;
&lt;br /&gt;
 class InterfaceExample {  //C++-interface&lt;br /&gt;
   virtual int aMethod(int arg) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
====Classic C - Headerfiles as interface====&lt;br /&gt;
&lt;br /&gt;
The classic C programming knows headerfiles, which ones play the role of interfaces: Function prototypes has the same appearance as a method definition in a Java-interface or a virtual abstract methods:&lt;br /&gt;
&lt;br /&gt;
 extern int aFunction(int arg);&lt;br /&gt;
&lt;br /&gt;
The difference to Java and C++-virtual-methods is: It is static linked. There can be only one implementation in a executable, whereby in Java and C++ the interface can be implement by several classes which are instantiated independently. It is a ''dynamic link''.&lt;br /&gt;
&lt;br /&gt;
But the principle of dependency-break is the same.&lt;br /&gt;
&lt;br /&gt;
====Classic C- struct forward declaration as dependency break====&lt;br /&gt;
&lt;br /&gt;
In C and C++ there is a nice possibility to prevent to many include-necessities:&lt;br /&gt;
&lt;br /&gt;
 struct TheType_t;&lt;br /&gt;
&lt;br /&gt;
 typedef struct Example_t{&lt;br /&gt;
   struct TheType_t* pointer;&lt;br /&gt;
 } Example;&lt;br /&gt;
&lt;br /&gt;
Inside the Example-struct a pointer of TheType is need. But &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; itself may left unknown. It isn't necessary to know the type while compiling this struct. It is not necessary to include the typedef of &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the pointer is used in the implementation (the C-file), then the type should be known. The implementation-File includes the definition of:&lt;br /&gt;
&lt;br /&gt;
  typedef struct TheType_t{&lt;br /&gt;
    int someStuff;&lt;br /&gt;
  }Thetype;&lt;br /&gt;
&lt;br /&gt;
Now the compiler checks the matching of &amp;lt;tt&amp;gt;struct TheType_t&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; with its given definition. The &amp;lt;tt&amp;gt;TheType_t&amp;lt;/tt&amp;gt; is the tag-name of the struct where &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; is the really type name. The writing-style with &amp;lt;tt&amp;gt;_t&amp;lt;/tt&amp;gt;-suffix is recommended and usual but not a fix rule.&lt;br /&gt;
&lt;br /&gt;
The forward declaration of a pointer-type straightens a complex dependencies of header files. In Java there is not a adequate possibility. A Java-interface is the way of straighten still.&lt;/div&gt;</summary>
		<author><name>91.54.100.91</name></author>	</entry>

	<entry>
		<id>http://72.14.177.54/Java4C/Component</id>
		<title>Component</title>
		<link rel="alternate" type="text/html" href="http://72.14.177.54/Java4C/Component"/>
				<updated>2011-02-25T18:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;91.54.100.91:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Components and modules, re-using==&lt;br /&gt;
&lt;br /&gt;
A software should consist of more as one component. Each component should be able to describe, program and test independent of the application which uses it. A component may be able to use in several applications. Then it is reuseable.&lt;br /&gt;
&lt;br /&gt;
Modules are the finer granularity inside components or inside the core of the application. Each module should be able to describe, program and test independently too. Modules may be one C/h-file or a package in Java or some related files. &lt;br /&gt;
&lt;br /&gt;
A class in ObjectOrientation is the more finer granularity inside modules. A class in the C-programming is a logical coherence between one data structure and related subroutines. One class may be presented exactly with one source-file.&lt;br /&gt;
&lt;br /&gt;
==Dependencies between components, modules, classes==&lt;br /&gt;
&lt;br /&gt;
If another class is used inside a class, it depends on it. Formally it depends on the signature of the methods of the class. Really the functionality depends on the functionality of the called methods.&lt;br /&gt;
&lt;br /&gt;
For a independent test of a class, module or component it may be necessary to abstract the functionality of the depending stuff. The behavior of the depending stuff should be replaced by a simulation or emulation.&lt;br /&gt;
&lt;br /&gt;
There are '''horizontal and vertical dependencies''': If a class/module/component can be created, described and tested independent on another class/module/component, it is deeper in vertical or parallel in horizontal layer. If a class/module/component needs another one, it is above that in vertical layer. ''It needs'' means, in the real application it is associated to it and calls some methods from there. For the independently test all needed classes/modules/components may be able to replace.&lt;br /&gt;
&lt;br /&gt;
===Interfaces as dependency-breaker===&lt;br /&gt;
&lt;br /&gt;
There is a problem: Module_A needs some methods from Module_B and on the other hand Module_B needs some things from Module_A. Both modules are parallel in layer, but there are not able to develop and test independently. &lt;br /&gt;
&lt;br /&gt;
Either the both modules are not two separated modules, the functionality should be combined in one module. - Or it should be separated using interfaces.&lt;br /&gt;
&lt;br /&gt;
The ''interface'' is a language-element of Java. It defines methods with its signature, but without implementation. The description, &amp;quot;''what should the method do, which argument values are expectable, meaning of the return value''&amp;quot; belongs to the method anyway. In C++ interfaces are able to create in a similar kind as Java. It is a class with only virtual abstract methods and without any implementation:&lt;br /&gt;
&lt;br /&gt;
 class InterfaceExample {  //C++-interface&lt;br /&gt;
   virtual int aMethod(int arg) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
====Classic C - Headerfiles as interface====&lt;br /&gt;
&lt;br /&gt;
The classic C programming knows headerfiles, which ones play the role of interfaces: Function prototypes has the same appearance as a method definition in a Java-interface or a virtual abstract methods:&lt;br /&gt;
&lt;br /&gt;
 extern int aFunction(int arg);&lt;br /&gt;
&lt;br /&gt;
The difference to Java and C is: It is static linked. There can be only one implementation in a executable, whereby in Java and C++ the interface can be implement by several classes which are instantiated independently. It is a ''dynamic link''.&lt;br /&gt;
&lt;br /&gt;
But the principle of dependency-break is the same.&lt;br /&gt;
&lt;br /&gt;
====Classic C- struct forward declaration as dependency break====&lt;br /&gt;
&lt;br /&gt;
In C and C++ there is a nice possibility to prevent to many include-necessities:&lt;br /&gt;
&lt;br /&gt;
 struct TheType_t;&lt;br /&gt;
&lt;br /&gt;
 typedef struct Example_t{&lt;br /&gt;
   struct TheType_t* pointer;&lt;br /&gt;
 } Example;&lt;br /&gt;
&lt;br /&gt;
Inside the Example-struct a pointer of TheType is need. But &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; itself may left unknown. It isn't necessary to know the type while compiling this struct. It is not necessary to include the typedef of &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the pointer is used in the implementation (the C-file), then the type should be known. The implementation-File includes the definition of:&lt;br /&gt;
&lt;br /&gt;
  typedef struct TheType_t{&lt;br /&gt;
    int someStuff;&lt;br /&gt;
  }Thetype;&lt;br /&gt;
&lt;br /&gt;
Now the compiler checks the matching of &amp;lt;tt&amp;gt;struct TheType_t&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; with its given definition. The &amp;lt;tt&amp;gt;TheType_t&amp;lt;/tt&amp;gt; is the tag-name of the struct where &amp;lt;tt&amp;gt;TheType&amp;lt;/tt&amp;gt; is the really type name. The writing-style with &amp;lt;tt&amp;gt;_t&amp;lt;/tt&amp;gt;-suffix is recommended and usual but not a fix rule.&lt;br /&gt;
&lt;br /&gt;
The forward declaration of a pointer-type straightens a complex dependencies of header files. In Java there is not a adequate possibility. A Java-interface is the way of straighten still.&lt;/div&gt;</summary>
		<author><name>91.54.100.91</name></author>	</entry>

	</feed>