400 likes | 702 Views
The Risks and Benefits of Software Engineering with Java †. Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-255 Storrs, CT 06269-2155. steve@engr.uconn.edu http://www.engr.uconn.edu/~steve
E N D
The Risks and Benefits of Software Engineering with Java† Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-255 Storrs, CT 06269-2155 steve@engr.uconn.edu http://www.engr.uconn.edu/~steve http://www.engr.uconn.edu/cse (860) 486 - 4818 †This work was supported by a contract from the Mitre Corporation.
Identifying Relevant IssuesStrongest Potential Risks • Unclear Standardization - A Political Hot Potato • Microsoft and Apple - Partnership’s Impact on Java • Security Flaws and Java - A Constant Concern • Performance - Will (Has?) HotShot VM Solve Problem? • Portability and Look-and-Feel: Has Platform In(De)pendence been Achieved?
Identifying Relevant IssuesLearning, Language, Environments • Similarity to C/C++/OO - Strong Ties to Core OO Concepts • Teaching Perspective - Easy to Learn/Teach/Use • Complexity of APIs - Excellent Breadth/Depth • Lack of Generics - Reduces Reuse and Slows Productivity • IDEs and JavaBeans: Development/Prototyping Environment
Identifying Relevant IssuesMost Significant Potential Benefits • Programming Language Interactions - Cross Compilation, Byte-Code Generators, Translators • Client/Server and DOC - CORBA, ORBs, JNI, Legacy/COTS • Database/Persistence - Interactions with Relational/OO DBS ALL THREE INVOLVE ENTERPRISE COMPUTING!!!
Assessing Risks and Benefits • Java is Rapidly Evolving • What are the Key Issues that Software Managers and Engineers Must Understand to Successfully Utilize Java? • What are the Strongest Potential Risks for Switching to Java? • What Capabilities of Java Provide the Strongest Case for the Technology? • How Quickly Can Software Professionals Learn Java? • What are the Long-Term Benefits of Java? • How Can Java Interact with PLs, Legacy, and COTS?
Overview of Remainder of Talk • Explore Risks and Benefits of Java • Classified Issues According to: • Strongest Potential Risks • Learning, Language, and Environments • Most Significant Potential Benefits • Clearly Identify the Pros, Cons, and Unknowns Associated with Each Risk/Benefit Issue • Detail Future Plans Concerning Java • Summarize and Questions
Potential Risk 1: Standardization • Unsettled Issue May Impact on Potential of Java • Standardization Needed by Business/Government • Sun asked International Standards Organization (ISO) to Declare Java as International Standard • However, Sun wanted to Retain Sole Ownership • US Delegation Against this Move - Supported by HP, Intel, TI, IEEE, etc. • Other Nations (France, Great Britain) Back Sun • Final Vote 20-2 in Favor of Sun: November 14, 1997 • Current Status: Java Standard May be Turned Over to Third Party Independent of Sun
Potential Risk 1: Standardization • Without a Single Standard, Companies May Only Support Subsets of Java • For Example, Sun Suing Microsoft Claiming that Internet Explorer Omits Vital Parts of Java • Does Microsoft’s Version of Java Contain Features/Capabilities not in Sun’s Version? • Multiple and Varied Subsets will Destroy Platform Independence • Why Should One Switch to Java if Multiple Versions of ‘Same’ Software Maintained for Different Platforms? • This is a Significant Con that Must be Monitored!
Potential Risk 2: Microsoft/Apple • August 1997 Announcement of $150 Million Microsoft Infusion into Apple includes Cooperative Java Work • Is Microsoft Attempting to Wrest Control of Java from Sun? • Will (Are?) there be Two Java Camps - Sun vs. Microsoft? • What is the Potential Downside of Competing Java Camps? • Hampering of Standardization • Incompatible Versions of Java • Frustrated User Community
Potential Risk 2: Microsoft/Apple • Con: Competing/Incompatible Java Versions will Significantly and Adversely Reduce its Attractiveness • IBM, Sun, and Netscape Announced an Alliance to Cooperate on Java to Counter Microsoft’s Move • Striving for Compatibility on All Platforms Including Win95 and NT • Pro: Microsoft Move May Force Sun to Change their Standards Position • Unknown: Strength and Productivity of Alliances
Potential Risk 3: Security Flaws • Announcements in Mainstream Press of Flaws in Netscape or Explorer • Flaw in Browser (or Software Application) May Result in a Java Applet Causing Damage During Execution • August 1997 Bug in Internet Explorer • Permitted an Applet to Open Network Connection to a Server Different from its Origin • Violates Java Security Model • Bug in Explorer Rather Than Java
Potential Risk 3: Security Flaws • Java across the Internet is Powerful, but there must be Assurances Related to Security! • Security Critical and Pervasive Concern • Protecting Government Sensitive Data • Insuring Consistency of Information in Financial Sector • Maintaining Confidentiality of Health Care and Personal Information • Con: Must be Tracked for Both Browser Applets and within Java Applications!
Potential Risk 4: Performance • Java has Poor Performance Reputation • Execution Speed May Differ Substantially Across Platforms • One Solution: Third-Party JVM Customization (Kaffe) • Another Solution: Microsoft’s Win95 Java Performs Better than Sun’s Win95 Version of Java • Yet Another Solution: Sun’s HotSpot JVM in 1.2 with Just-in-Time Compilation • Con: Microsoft’s Own Version is Workable Assuming a Java Standard to Force Completeness!
Potential Risk 5: Portability and Look-and-Feel • Performance Problems Related to Portability • Is Java Truly Portable? • We’ve had Success at Bytecode Level in Porting Same Code from Solaris to Win95 to Linux after Compilation • However, at Source Code Level, Case Sensitivity in Unix Files Impact When Moving to/from Win95 (Class Names and File Names Must Match) • GUI Differences Across Platforms Yield Look-and-Feel Differences • Unknown: Can Platform Independence with Reasonable Performance be Achieved?
Potential Risk 5: Portability and Look-and-Feel • First Experience: CSE230 • 50+ Students given 41 “.class” Files and 4 “.java” Files with 3 weeks to Learn Java, html, and Modify/Extend Code • All But 1 or 2 Finished Project • CSE230 Now Java Based • Platforms Utilized: • “.class/.java” Files Built on Solaris • Students Used Solaris, Win95/98/NT, Linux • Projects Graded on Solaris • Java Release Versions Caused Problems • Successful from Learning/Course Perspective • Students Indicated High Satisfaction with Project
Learning, Language, Environment 1:Similarity to C/C++/OO • Non-OO Language Constructs of Java (Statements, Operators, Precedence, Declarations, etc.) Identical or Similar to C++ • OO Features Class, Inheritance, Exceptions - Strong Syntactic and Semantic Ties to C++ • Experience at UConn In Learning/Using Java • 30 Juniors/Seniors One Semester Significant Team Projects • 50 Juniors Modify/Extend Existing Code Individual Project • 50 Juniors with Java as CSE230 Language • Background of SW Engineering, OO, and C++ • Pro: Similarity to C++ and Ease of Learning!
Learning, Language, Environment 1:Similarity to C/C++/OO • Superiority of Java to C++ from Software-Engineering Practices Perspective • Package Construct in Java - No Analog in C++ • Varied Choices to Control Visibility of Classes within Packages and Between Packages • Basic APIs for GUIs, Remote DB Access, Threading, etc., Easily Learned and Used in Semester • Con: Complex APIs and Advanced Features More Difficult to Learn and Use • Pro: OO of Java More Robust /Versatile than C++
Learning, Language, Environment 2:Teaching Perspective • Java has Emerged as an Excellent Teaching Language • Platform Independence - Instructor Can Avoid HW/OS Differences • ‘Free’ Compilers Across Platforms: Students Use/Download Familiar Platforms! • Easy to Learn if Know C++ • Enforcement of Abstraction and Modularization with Class/Package Paradigms • Hiding Allows Controlled Sharing Between Classes with Alternate Visibility Choices • Pro: OO Java More Robust /Versatile than C++
Learning, Language, Environment 2:Teaching Perspective • In a University Setting Java is Easily Established on Existing Hardware with Ease and Without Cost • Students have Downloaded and Installed Java on Win95, NT, and Linux • Availability of Shareware IDEs Provides Powerful Tools that Assist in Effectively Utilizing Java • Java APIs Support Breadth of Domains and Applications Including Business, Engineering, GUIs, Embedded Systems, Databases, etc. • Pro: Java in Classroom is a Strong Benefit!
Learning, Language, Environment 3:Complexity of APIs • Core Language is Simple and Straightforward to Use • APIs - Wide Range of Complexity • Select APIs Require Sophisticated SW Engineer with Significant Expertise • Simple APIs Include: AWT for GUIs • Complex APIs Include: Networking, Java Native Interface (JNI) • Pro: Simplicity of Language • Con: Difficult to Learn and Effectively Use Select APIs
Learning, Language, Environment 3:Complexity of APIs: Breadth & Depth • Java Targeted for Breadth of Domains • Enterprise, Media, and Personal APIs • JVM in Consumer Products • Embedded, Commerce, Management APIs • Breadth of Domains Achieved by Depth of Language • Package/API Concept: Easily Extend Capabilities to Emerging Domain or Market Segment • APIs are Rich Set of Current/Future Tools • Example: Java Card API - Smart Card Technology • Pro: Potential to Dominate Programming Arena
Learning, Language, Environment 4:Lack of Generics • Generics in Programming Languages • Ada95 (Generic Packages) and C++ (Templates) • Promote Code Reuse and Increase Productivity • Java Supports Design-Level Generics • Single Interface Implemented by Multiple Classes • No Shared Implementation - Hence No Code Reuse • No Gain in Productivity - Only Consistent Interface • Con: Generics Not Supported - Hence Reuse and Productivity Impaired!
Learning, Language, Environment 5:IDEs and JavaBeans • Proliferation of Commercial and Shareware Interactive Development Environments (IDEs) • Microsoft’s Visual J++ /Borland’s Jbuilder • Symantec’s Visual Café and Super Mojo • ObjectShare’s Parts for Java, etc… • Available IDEs with Minimal or No Cost • Strong Incentive for Colleges/Universities • Business/Government Also Benefits • Contrastwith $50,000 Validated Ada83 Compilers • Pro: Availability of Inexpensive IDEs Major Benefit that Should Spur/Bolster Java Popularity!
Learning, Language, Environment 5:IDEs and JavaBeans • JavaBeans Supports Component-Based, Plug-and-Play Design and Development • Promote Construction of New Applications by Combining Existing Components (Beans) • Allow Non-Experts to Build Significant Applications • Visual IDEs for JavaBeans • Transition Away from Sequential/File-Based Coding • Promote Acceptability of Java • Pro: Companies are Making Choices • Unknown: Emerging Capability with Much Promise But Largely Unproven!
Most Significant Potential Benefits 1:Programming Language Interactions • Automated Language-Level Translation - Source Code • Synkronix’s PERC: Cobol to Java Cross Compiler • Allows Existing Cobol Code to Be Reused in New Java-Based Applications • Minimize Retraining: Cobol Programmers May Not Need Retraining • Opens Potential Markets for Java Generated Code • Assumes Completeness of Translator • Non-Commercial Translators Include JCC (Java to C) and C2J++ (C++ to Java)
Most Significant Potential Benefits 1:Programming Language Interactions • Automated Language-Level Translation - Bytecode • Change Compilation of Language from Native Assembly to Java Bytecode • JVM Executes Bytecode - Source Code Irrelevant • AppletMagic Generates Bytecode from Ada95 • Fully Translate Ada95 Packages/Types to Java Packages/Classes • Allows Direct Use of Java API Packages applet, awt, io, lang, net, and util • Unclear if All Ada95 Constructs/Programs are Translatable to Java Bytecode
Most Significant Potential Benefits 1:Programming Language Interactions • Kawa IDE for Scheme Written in Java • Compiles Scheme Programs Directly to Java Bytecodes • Translation Nearly Complete from Scheme to Java • Defines Java APIs to Support Scheme Types • Products Like PERC, AppletMagic, and Kawa Forerunners for Future IDEs that Support C, C++, Pascal, etc., Bytecode Translation • Pro: If Source/Bytecode Translation is 100% • Con: Otherwise • Unknown: Products Still Emerging!
Most Significant Potential Benefits 1:Programming Language Interactions • OS Level Interactions Across Languages • Separate Process Per Language with Communication via Pipes, Sockets, etc. • Employ Message Passing Paradigm • Interprocess Communication Between Programs Written in Same/Different Languages Well-Understood Problem with Known Solutions • Alternatively, Attempt to Make Direct Calls from a Program Written in One Language to a Program Written in Another Language
Most Significant Potential Benefits 1:Programming Language Interactions • Java Native Interface (JNI) Bridge Between Java Applications and Native Interface • JNI Supports Calls from Java to C/C++ • Also Supports Calls from C/C++ to Java • JNI Trap-Door that Circumvents Platform Indep. • JNI Eliminates 100% Portability • JNI Requires Significant Skill and Expertise for Correct and Consistent Usage • JNI Opens Security Door with Inclusion of Native Code
Most Significant Potential Benefits 1:Programming Language Interactions • Summary of Programming Language Interactions • Source Code and Bytecode Translators Offer Potential to Reuse ‘Old’ Code and Minimize Retraining • Also Facilitates Upgrade of Existing Applications to Platform Independent Java Framework • TwinPeaks, a Beta Product from Sun, Provides Higher Level Abstraction to Integrate Java to C/C++ Applications (Built on Top of JNI) • TwinPeaks Facilitates Building of Java Wrappers
Most Significant Potential Benefits 2:Client/Server and DOC • Distributed Object Computing and Client/Server Paradigm are Norms for Today’s Applications • Main Support for Both via Java’s Enterprise API • JDBC: Java Clients Interact with Relation DBS • RMI: Remote Method Invocations Between Clients and Servers When Both Written in Java • Java IDL: Integration with CORBA/ORBs • JNDI: Platform Independent Access to Native Naming and Directory Services • JNI: Java Native Interface
Most Significant Potential Benefits 2:Client/Server and DOC • Enterprise API and JDBC, RMI, Java IDL, JDNI, and JNI Offer Significant Potential for • Integration of Legacy and Relational & OO DBs • Upgrade of Legacy Applications with Java Wrappers • Incorporation of Current and Future COTS • Development of New Java Clients and Servers • Yields a Common Java Framework • Reliance on CORBA and ORBs to Facilitate Next Generation of Integrated and Distributed Applications
Most Significant Potential Benefits 2:Client/Server and DOC • Pro: If All Promises of Java/CORBA Achieved! • Legacy Applications, Current/Future COTS, Database Applications can be Integrated • Cross Platform, Heterogeneous, Distributed Applications with Underlying Java/CORBA • Unknown: Technologies Largely Unproven • CORBA in Infancy: Must Stabilize and Come Into Widespread Successful Usage • Will (Has?) HotShot VM Improve Java’s Performance? • Java for DOC Very Immature • Up to 5 Years to Assess Technologies
Most Significant Potential Benefits 3:Database/Persistence • Three Forms of Persistence Supported in Java • Object Serialization: Flatten Instances to Stream of Bytes that can be Stored in Files or Shipped to Another JVM • JDBC: Integration with Relational DBSs • Emerging Java Integration with OO DBSs • JDBC Integration at Query Language and Embedded Levels • OO DBS Integration Provided by OO DBS Vendors • ObjectStore • Jasmine by CAI
Most Significant Potential Benefits 3:Database/Persistence • Pro: Various Alternatives have Positive Benefits • Object Serialization: Elegant Technique for Storing, Transmitting, and Recovering Instances • Integration with Relational and OO DBS Critical to Allow New Java Clients Access to Existing Data • Unknown: Two Potential Risks • JDBC API is Incomplete: Many Planned and Proposed Features • OO DBC Interactions in Infancy: Products Just Beginning to Emerge
Pros of Java • Pros • Java is Free • Easy to Teach: Short Learning Curve if Know C++ • Tighter Language than C++ • Platform (In)dependence • Breadth of Domains and APIs • Potential Interactions with other PLs (JNI) • Java Linkages to Legacy, COTS, CORBA • Relational/OO Database Interoperability • Available IDEs, JavaBeans, and Components • Promise of All Things to All People
Cons of Java • Cons • Standards Issue Unresolved • Performance and Portability Problems • Language Continues to Evolve • Security Flaws Must be Carefully Tracked • Lack of Generics, Multiple Inheritance Impacts on Productivity • Advanced APIs are Difficult to Learn and Use • Potential Split of Java into Two Competing Camps • Automated Language Translation Tools Lacking • Promise of All Things to All People
Unknowns of Java • Unknowns • Standardization Issue Must be Resolved • Performance May Take Time to Improve • 100% Platform Independence May Not be Achieved! • Client/Server, DOC, Legacy, and COTS Promises are Largely Unproven at this Point in Time • Database Interoperability, CORBA Links Must be Fully Explored • JavaBeans/Component Based Development in Infancy and Rapidly Changing • CAUTION! CAUTION! CAUTION!!!!
The Future of Java • Future Directions are Fluid and Mutable • Java Continues to Rapidly Evolve • Ongoing Future Directions • JavaOS: Complete OS Around Java • Microprocessors: picoJava, microJava, Ultra-Java • PersonalJava: Java in Game Consoles, Smart Phones, Remote Controls, Touch Screens, etc. • Embedded Java: Java in Mobile Phone, Process Control Network Routers, etc. • Java Card: Smart Card Technology - Credit Card Computer to Store Personal, Health Data, etc.