Object Oriented JAVA programming for GIS applications development
A Open Source perspective to stand-alone and Web solutions
Brochure (not available) Registration module (not available)
The course aims at developing analytical and programming skills for spatial applications. Based on a step-by-step, still ambitious, path, the course covers fundamental concepts in OO ( O bject O riented) programming, while focusing on JAVA syntax and programming philosophy addressing geodata management, visualization and querying tasks.
JAVA™ is well known for its flexibility in developing distributed Web applications, also thanks to its multiplatform architecture ( write once, run anywhere ) and it is particularly well suited for approaching modern programming paradigm. Despite its syntax being similar to C++, JAVA™ is effectively much simpler, while its study still provides consistent foundation to professional programming in other languages, as Visual Basic or PHP, as well as a consistent framework for better understanding of more complex concepts underlying ESRI component based environment VBA/ArcObjects for ArcGIS 8/9™.
The course adopts the quite advanced, still didactic, textbook “Java Programming for Spatial Sciences” by Jo Wood (City University, London). Programs developed in the course will be based on Jo Wood's source code, providing a full support to a consistent learning path.
At the end of the course, participants will have an in-depth knowledge of software engineering principles, OO constructs, JAVA syntax and spatial applications development techniques. Based on both formal lectures on underlying theory and hands-on experience, participants will gradually develop two distinct applications, addressing dynamic behaviour of most environmental and social phenomena and supporting data management, visualization, querying and analysis of geospatial vector and raster data. Both stand-alone and Web based applications (applets) will be considered.
The course is part of a wider GIScience learning project, addressing both introductory and advanced issues, including a specialization path in environmental applications development and management, with interests spanning through such different fields as geology, environmental sciences, urban planning, land use, IT, just to recall few of them.
ProgramDetailed course program, based on a mixed theory and hands-on formula, follows:
Introduction to fundamental concepts in OO programming and software engineering
- Short introduction to course objectives and structure
- Introduction to procedural and OO programmino from a historical perspective, focusing on relevant features of JAVA™ and its key-role in distributed applications development
- Classes and objects. Definitions, development, class state and behaviour, objects instantiation. JAVA and BlueJ editor: installation, fundamentals and references
- Software engineering, UML fundamentals and guidelines of best practice in code development
- Fundamental types, variables, and typecasting.
- Classes vs. objects, objects instantiation, inheritance, fundamental methods (constructors, accessors and mutators), parameters passing, abstract methods and interfaces.
- Overview of graphical classes ( AWT and SWING ). Development of classical introductory program Hello. Classes design face to reusability requirements, relationship types and code development.
- Case study A: design and development of a class hierarchy after the analysis of an ants colony dynamic behaviour within a confined spatial context. Software engineering and source code development will provide hands-on evidence of OO concepts, namely inheritance, composition and interfaces implementation. The example introduces the requirements for a conceptual design of a spatial class to handle the dynamic behaviour of a single ant.
- Variables, arithmetic and logical operators, precedence operators, precision, iterator controls (for,do while and while do), nested loops, monodimensional and multidimensional arrays (declaration and initialization, raster model development), design and dynamic management of graphical components (Flow, Border and Grid Layout).
- Case study B: analysis, design and development of a GUI (Graphical User Interface) to address raster visualization tasks, by extending native JPanel class. Screen coordinates transformation to georeferenced framework, colors and dynamic layout management (graphics display, metadata and user commands).
- Decisions management statements: if, if-else, nested if, switch, flow-through, break and default, conditional operators, guidelines in optimization of program flow control. Basics of sorting and searching algorithms. Development of a simple class implementing Bubble Sort algorithm.
- Case study A: development of a spatial class (Footprint), to manage point or rectangular elementary vectr geometries. Generalization of raster and vector model by developing a common interface (SpatialModel). Class variables and elementary topological algorithms analysis and development (separation, adiacency, intersection, enclosure, coincidence after the simplified classification of Molenaar, 1998).
- Variables scope (local, method, object and class), modifiers (private, public e protected) to enhance their visibility. JAVA code documentation via Javadoc, main JAVA libraries (packages as awt, swing, event, util, io and applet). New packages creation and organization, naming rules to avoid conflicts, paths management (classpaths).
- Case study A: GUI design based on swing package, using the delegation model of event handling, relevant to flexibility requirements for extension to alternative approaches (i.e. use of awt and applets ). In the framework of a rigorous OO approach, each class is responsible for its graphical output, focusing on the 3w (what, when and where) rule.
- Modeling of vector spatial objects by using arrays. Theory on dynamic groups creation and management ( iterators and collections - List, Set, Map and their ordered counterparts, SortedSet e SortedMap), TreeMap and HashMap. Database connectivity fundamentals . Development of a more efficient vector model based on dynamic collections, by implementino the two new classes GISVector e VectorMap.
- Case study A: dynamic behaviour programming of moving, feeding and food transport. Previous model is extended by adding support to food (energy) and to a complex ants colony, modelled as an objects collection. JAVA potentials in modelling dynamic behaviour is fully investigated.
- JAVA™ delegated events, Threads creation, their relevance and usefulness in implementation of GUIs. Analysis of WindowListener interface and delegated event handling to manage interaction with GUI. Short programming examples relevant to analysis of Threads key role in managing regular time events (Timer class).
- Case study B: further improvement of GUI (Graphical User Interface), to manage visualization of both vector and raster coverages by implementing event listeners to keep trace of windows resizing and mouse querying. Textual metadata integration within the general framework, local to geographical coordinates transformation, high quality vector output management after JAVA™ 2D classes.
- Input and output streams, keyboard standard input, catching exceptions, opening, reading, writing and closing of files, GUI interaction with the file system, strings analysis and object serialization.
- Case study B: prototype extension to file management, textual files importing, serialization of spatial objects and additional GUI facilites. Description of ASCII format examples (ArcInfo™ raster grid and GRASS™ generic vector), as well as their serialization and deserialization.
- JAVA™ Applets , HTML (Hyper Text Markup Language) fundamentals, Applets calls embedding in Web pages, parameters passing, security and Browser restrictions. Development of a simple cartographic applet, with elementary querying functionalities embedded in HTML code..
- XML (Extensible Markup Language) foundations, JAVA™ settings for the XML management, Document Object Model (DOM). Case studies of stand-alone to Web based application conversion.
MsOffice™, RDBMS MsAccess™ (www.microsoft.com), JAVA™ (http://java.sun.com) and BlueJ™ (www.bluej.org). Both the interpreter and the language are free and can be downloaded from the above websites.
Who is it for?
Professionals working for both private and public sector interested in planning, environment and programming for spatial sciences, graduate and post-graduate students in similiar disciplines.
It is required: a deep knowledge of PC/MsOffice™ environment, a personal interest in application development GIS platforms. No formal programming language knowledge is required, even if it could be useful a previous experience in basic software customisation.
Experience in GIS platforms like ESRI ArcView 3.x™, ArcGIS 8.x/9™, Geomedia™, Grass™ or Idrisi™ can be useful in algorithms analysis.
The course requires a strong interest in the subject and the capacity to work at home pursuing the objectives. The structure and the textbook support this approach by allowing long periods of time between lessons and by giving a well known reference manual.
Locations & dates
To be defined
To be defined
At the end of the course, participants attending at least 70% of the lessons will be awarded a Completion certificate.
The course book provided to each participant is: Wood J., 2002. JAVA programming for spatial sciences. Taylor & Francis, London, UK.
A rich reference bibiliography is available either in paper and digital format. A web reference is the JAVA™ development section (http://java.sun.com) in the Sun website. Good manuals are also:
- Eckel B., 2002. Thinking in JAVA. Prentice-Hall, 3rd Edition, Scaricabile dal sito: http://www.mindview.net/Books/TIJ/
- Barnes D.J. e Kolling M., 2003. Programmare in JAVA con BLUEJ: Introduzione alla programmazione a oggetti. Addison-Wesley. Pearson Education Italia S.r.l., Milano
For the programming issues related to GIS please consult:
- Ormsby T., Napoleon E., Burke R., Groessl C. e Feaster L., 2001. Getting to know ArcGIS desktop: basics of ArcView, ArcEditor and ArcInfo. ESRI Press (includes a CDROM with a 180 days trial copy of ArcGIS™)
- Burke R., 2003. Getting to know ArcObjects – Programming ArcGIS with VBA. ESRI Press, Redlands, California (CDROM included)
For further information, please refer to email@example.com Email address or refer to contact references at Contacts section of web site www.giscience.it .