David Eichmann
School of Library and Information Science & Dept. of Computer Science
University of Iowa
3087 LIB
Iowa City, IA 52242
URL:
http://mingo.info-science.uiowa.edu/eichmann/
Abstract
Keywords: abstraction, packaging, decoupled architectures, patterns
Workshop Goals: To establish a fresh direction for reuse that builds upon decentralized, decoupled architecures.
Working Groups: Distributed Architectures.
3 Approach
Java and its supporting runtime
environment is rich with features investigated by the reuse community.
Like C before it, the language itself is small, compared to the total vocabulary
used by an average programmer. Indeed, at the statement level, Java
feels
like C, picking up some of that language's quirkiness (how often to you
count++ rather than count = count + 1?), while avoiding most of the resulting
obfuscation (ever try to explain the distinction between ++count and count++
to a typical freshman?).
Here are a few of the language
features and APIs that support reuse:
The Java Reflection API provides powerful mechanisms for development
tools to 'introspect' a component such as MORE, discover those aspects
available for customization and the interfaces through which the component
can be manipulated. This technology holds great promise for future
approaches to dynamic formulation of system architectures [Sametinger97]
such as those solicited by NSF for the Next Generation Software initiative.
4 Comparison
It is not my intention to claim that with the advent and popularity of Java, research into programming languages becomes moot. Indeed, who would have thought as recently as three years ago that an upstart language designed by a single commercial organization could have achieved the acceptance and market penetration that Java has? Clearly, with the right appeal, new languages can gain broad usage. If anything, Java argues that language development offers great potential to shape the thinking and expression of the software development community.
Much of Java's potential involves
not the language per se, but rather what a common framework of this flexibility
and expressiveness can mean for compatible, collaborative research.
References
[Booch86] Booch, Grady, "Object-Oriented Software Development," IEEE Trans. of Software Engineering, Vol. SE-12, No. 2, February 1986, pp. 211-221.
[Eichmann97] Eichmann, David, "Representing Knowledge in Domain Engineering," WISR-8, Columbus, OH, 23-26 March, 1997.
[Eichmann98] Eichmann, David, MORE repository system, http://marengo.info-science.uiowa.edu/MORE/.
[Lea97] Lea, Doug, Concurrent Programming in Java: Design Principles and Patterns, Addison-Wesley, 1997.
[Meyer88] Meyer, Bertrand, Object-Oriented Software Construction, Prentice Hall, 1988.
[Sametinger97] Sametinger, Johannes, "Component Interoperation," WISR-8, Columbus, OH, 23-26 March, 1997.
[Symantec98] Symantec, Inc., Visual
Cafe for Java, Cupertino, CA, 1998.
David Eichmann (david-eichmann@uiowa.edu) School of Library and Information Science & Dept. of Computer Science, University of Iowa, Iowa City, IA 52242, http://mingo.info-science.uiowa.edu/eichmann/
I am an Assistant Professor of Information
Science in the School of Library
and Information Science, with a joint appointment in the
Department
of Computer Science. Before returning to the University of Iowa
in the fall of 1997, I was an Associate Professor and Chair of
Software Engineering at the University
of Houston - Clear Lake and Director of Research and Development of
the Repository
Based Software
Engineering
Program (RBSE), where my responsibilities included management of a
fifteen person research and development group working in the
areas of reuse / reengineering and
Internet resource discovery. The work on the
MORE repository system resulted in the RBSE development team being
nominated by Johnson Space Center for the 1998 NASA Software of the Year
Award. We didn't win...