1 / 40

The Risks and Benefits of Software Engineering with Java †

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

terrell
Download Presentation

The Risks and Benefits of Software Engineering with Java †

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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.

  2. 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?

  3. 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

  4. 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!!!

  5. 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?

  6. 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

  7. 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

  8. 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!

  9. 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

  10. 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

  11. 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

  12. 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!

  13. 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!

  14. Just-In-Time Compilation

  15. 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?

  16. 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

  17. 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!

  18. 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++

  19. 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++

  20. 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!

  21. 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

  22. 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

  23. 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!

  24. 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!

  25. 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!

  26. 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)

  27. 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

  28. 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!

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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!!!!

  40. 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.

More Related