at-m42:lecture16
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
at-m42:lecture16 [2009/05/05 17:01] – eechris | at-m42:lecture16 [2011/01/14 12:45] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 25: | Line 25: | ||
* **[[#The Trouble with EJB]]** | * **[[#The Trouble with EJB]]** | ||
* [[#Better, Faster, Lighter Java|Lightweight Containers]] | * [[#Better, Faster, Lighter Java|Lightweight Containers]] | ||
- | * [[#Other Important Enterprise Technologies]] | + | * [[#Bigger Role for XML|Other Important Enterprise Technologies]] |
* [[# | * [[# | ||
- | * [[#Things to Watch]] | + | * [[#Gazing into my Crystal Ball|Things to Watch]] |
* [[#Module Summary]] | * [[#Module Summary]] | ||
Line 183: | Line 183: | ||
* [[#Other Important Enterprise Technologies]] | * [[#Other Important Enterprise Technologies]] | ||
* [[# | * [[# | ||
- | * [[#Things to Watch]] | + | * [[#Gazing into my Crystal Ball|Things to Watch]] |
* [[#Module Summary]] | * [[#Module Summary]] | ||
Line 213: | Line 213: | ||
* Spring addresses most infrastructure concerns of typical applications. It also goes places other frameworks don' | * Spring addresses most infrastructure concerns of typical applications. It also goes places other frameworks don' | ||
- | ===== Spring Features ===== | + | ===== Spring Features |
* Organizes [business] tier objects. | * Organizes [business] tier objects. | ||
Line 220: | Line 220: | ||
* Facilitates good programming practice by reducing the cost of programming to interfaces, rather than classes, almost to zero. | * Facilitates good programming practice by reducing the cost of programming to interfaces, rather than classes, almost to zero. | ||
- | ===== Spring Features ===== | + | ===== Spring Features |
- | Most business objects in Spring applications have no dependency on Spring. | + | * Most business objects in Spring applications have no dependency on Spring. |
- | Applications built using Spring are very easy to unit test. | + | |
- | Makes the use of EJB an implementation choice. | + | |
- | Provides an alternative to EJB that's appropriate for many web applications. | + | |
- | Provides a consistent framework for data access, whether using JDBC or an O/R mapping product such as Hibernate. | + | |
- | ===== Interesting Technologies in Spring ===== | + | |
+ | ===== Interesting Technologies in Spring | ||
+ | |||
+ | * Makes extensive use of ordinary JavaBeans (equivalent to Groovy classes)((In fact Groovy objects can be substituted for JavaBeans)) | ||
+ | * Provides declarative transactions | ||
+ | * Supports Aspect-Oriented Programming (AOP) | ||
+ | * Makes the “wiring” of components (that is deployment) simple by use of a technique called Inversion of Control (IoC) or dependency injection. | ||
+ | |||
+ | ---- | ||
- | Makes extensive use of ordinary JavaBeans (equivalent to Groovy classes) | ||
- | Provides declarative transactions | ||
Supports Aspect-Oriented Programming (AOP) | Supports Aspect-Oriented Programming (AOP) | ||
- | Makes the “wiring” of components (that is deployment) simple by use of a technique called Inversion of Control | + | * essentially a mechanism for stating |
- | Interesting Technologies in Spring | + | ===== Interesting Technologies in Spring |
- | Provides a database abstraction layer which separates business logic from persistence issues. | + | |
- | Is designed to support ORM frameworks such as JDO and Hibernate. | + | * Provides a database abstraction layer which separates business logic from persistence issues. |
- | Provides an MVC framework to reduce the need for Servlets and JSPs. Supports | + | |
+ | |||
+ | ---- | ||
+ | |||
+ | Spring is designed to support ORM frameworks such as JDO and Hibernate and supports | ||
===== More on Spring ===== | ===== More on Spring ===== | ||
- | There is much more to Spring than I can cover here. | + | * There is much more to Spring than I can cover here. |
- | It is the basis for Grails | + | |
- | I’ll be interested to see what your seminar reveals. | + | |
- | State-of-the-Art Report and Conclusions | + | ===== Contents ===== |
- | The Trouble with EJB | + | |
- | Lightweight Containers | + | |
- | Other Important Enterprise Technologies | + | |
- | Alternatives to Java | + | |
- | Things to Watch | + | |
- | Module Summary | + | |
+ | * [[#The Trouble with EJB]] | ||
+ | * [[#Better, Faster, Lighter Java|Lightweight Containers]] | ||
+ | * **[[#Bigger Role for XML|Other Important Enterprise Technologies]]** | ||
+ | * [[# | ||
+ | * [[#Gazing into my Crystal Ball|Things to Watch]] | ||
+ | * [[#Module Summary]] | ||
===== Bigger Role for XML? ===== | ===== Bigger Role for XML? ===== | ||
- | Java is marketed as a “write-once run anywhere” language that can run on any platform. | + | * Java is marketed as a “write-once run anywhere” language that can run on any platform. |
- | XML is a language for defining meta data (self describing data) that can be distributed to and manipulated on any platform. | + | |
- | Combined, Java and XML provide an interesting and powerful platform on which to build client-side and server-side services. | + | |
- | ===== Client Side XML ===== | + | |
- | XML is the next generation mark-up language for document and information delivery over the web. | + | ---- |
- | Combined with style information (XSL) and hypertext linking (Xlink/ | + | |
- | The Document-Object Model (DOM) allows the XML to be manipulated using scripting. | + | |
- | XML can be used to customize the user interface of a browser (e.g in Mozilla). | + | |
- | XHTML is a definition of HTML as an XML application. | + | |
- | XML is used for multimedia technologies such as MathML, SMIL, SVG, etc. | + | |
- | ===== Server Side XML ===== | + | |
- | XML is already used for configuration and deployment (e.g. in the servlets platform and Java EE). | + | **Client Side XML** |
- | In technologies like SOAP it is used to describe the interfaces provided by remote objects, the data to be passed and as an envelope for data transfer (over HTTP). | + | * XML is the next generation mark-up language for document and information delivery over the web. |
- | XML can be used to describe documents on the server-side and these be manipulated into HTML when delivered to browsers that cannot support XML themselves. | + | * Combined with style information (XSL) and hypertext linking (Xlink/ |
- | XML allows support for multiple views of the same information: | + | * The Document-Object Model (DOM) allows the XML to be manipulated using scripting. |
- | Can be readily combined with technologies like JSP/ASP to further separate user interface services from business logic. | + | * XML can be used to customize the user interface of a browser (e.g in Mozilla). |
- | ===== Server-Server XML ===== | + | * XHTML is a definition of HTML as an XML application. |
+ | * XML is used for multimedia technologies such as MathML, SMIL, SVG, etc. | ||
+ | |||
+ | **Server Side XML** | ||
+ | |||
+ | * XML is already used for configuration and deployment (e.g. in the servlets platform and Java EE). | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | * XML is natural for defining database schemas. | ||
+ | * Can be used for defining components and to mediate the persistent storage of active objects. | ||
+ | * Can be used for information interchange from business to business. | ||
+ | * Is perhaps overused for deployment! | ||
+ | ===== Document Delivery Frameworks | ||
+ | * Most interesting development in this area is perhaps Apache Cocoon. | ||
+ | * Cocoon is a 100% pure Java publishing framework that relies on new W3C technologies (such as DOM, XML, and XSL) to provide web content. | ||
+ | |||
+ | ----- | ||
- | XML is natural for defining database schemas. | ||
- | Can be used for defining components and to mediate the persistent storage of active objects. | ||
- | Can be used for information interchange from business to business. | ||
- | Is perhaps overused for deployment! | ||
- | Document Delivery Frameworks | ||
- | Most interesting development in this area is perhaps Apache Cocoon. | ||
- | Cocoon is a 100% pure Java publishing framework that relies on new W3C technologies (such as DOM, XML, and XSL) to provide web content. | ||
Does this using: | Does this using: | ||
- | XML: for self describing documents | + | * XML: for self describing documents |
- | XSL: for formatting text for display | + | |
- | XSLT: for converting from XML to XML (e.g. XML to XHTML) | + | |
- | XSP: for encoding scripts in XML and separating presentation from logic | + | |
- | Built on top of Jakarta Tomcat servlet engine and closely linked to the Apache web server. | + | |
===== Networks for Devices ===== | ===== Networks for Devices ===== | ||
- | The gradual encroachment of network-aware devices: | + | * The gradual encroachment of network-aware devices: |
- | Set-top boxes for video-on-demand, | + | |
- | Local area networks in the home | + | |
- | Providing services and ease of connection | + | |
- | Mobile phones and PDAs with internet connectibility | + | |
- | Emergence of wireless technologies like BlueTooth and FireWire | + | |
- | General convergence of communications and computing | + | |
+ | |||
+ | ---- | ||
Supported (in Java) by developments like JINI, PersonalJava, | Supported (in Java) by developments like JINI, PersonalJava, | ||
+ | |||
===== Peer-to-Peer Networking ===== | ===== Peer-to-Peer Networking ===== | ||
- | Success of Napster and similar networking techniques have rekindled interest in this issue. Neighbouring computing resources talk directly to each other after a discovery service has put them in contact with each other. | + | * Success of Napster and similar networking techniques have rekindled interest in this issue. Neighbouring computing resources talk directly to each other after a discovery service has put them in contact with each other. |
- | Potential for eliminating the server (at least as a large central resource). | + | |
- | Bad news for sellers of large central computing systems and servers. | + | |
- | The only mode of operation that is sensible for technologies like BlueTooth which have to configure themselves according to the environment that they find themselves in. | + | |
- | In Java JINI may be an important technology for this type of application. | + | |
- | Contents | + | ===== Contents |
- | The Trouble with EJB | + | |
- | Lightweight Containers | + | * [[#The Trouble with EJB]] |
- | Other Important Enterprise Technologies | + | * [[#Better, Faster, Lighter Java|Lightweight Containers]] |
- | Alternatives to Java | + | * [[#Bigger Role for XML|Other Important Enterprise Technologies]] |
- | Things to Watch | + | * **[[#Alternatives to Java]]** |
- | Module Summary | + | * [[#Gazing into my Crystal Ball|Things to Watch]] |
+ | * [[#Module Summary]] | ||
Line 315: | Line 336: | ||
Just because Java can handle many aspects of the modern client-server platform does not necessarily mean that it is the best way to handle such applications in all cases. | Just because Java can handle many aspects of the modern client-server platform does not necessarily mean that it is the best way to handle such applications in all cases. | ||
+ | |||
Some competing technologies worth considering: | Some competing technologies worth considering: | ||
- | Scripting languages | + | * Scripting languages |
- | Microsoft .NET | + | |
===== Scripting Languages ===== | ===== Scripting Languages ===== | ||
- | Java is relatively poor at handling text (see Servlet examples) | + | * Java is relatively poor at handling text (see Servlet examples) |
- | Not the easiest language for web-site development | + | |
- | Not particularly well adapted to use in rapid application development and prototyping | + | |
- | Difficult to use as a glue language for “components” | + | |
- | Better languages for these applications are arguably scripting languages like Perl, Python, Ruby, TCL/Tk, Visual Basic for Applications and in the browser Javascript or VBScript. | + | |
- | In many applications the best solution may be a multi-language solution rather than a single language solution. | + | |
- | Infrastructure technologies: | + | |
===== Groovy and Grails ===== | ===== Groovy and Grails ===== | ||
- | Groovy … a scripting language that is compatible with Java | + | * Groovy … a scripting language that is compatible with Java |
- | provides full access to that Java Platform APIs | + | |
- | Simplified collection syntax (lists, maps, ranges and regular expressions) | + | |
- | Closures and easier to use iteration, file, multithreading and networking APIs through closures. | + | |
- | Grails … a web application framework built on Spring. | + | |
- | DRY, convention over configuration, | + | |
- | We’ll hear more in your seminar | + | |
- | Multi-Language | + | ===== Multi-Language |
- | User interface services: | + | |
- | Web forms and JavaScript, TCL/Tk, Visual Basic, Active-X | + | |
- | Text handling: | + | |
- | Perl, Python, JPython, JRuby, Groovy | + | |
- | Middle-tier | + | |
- | EJB, DCOM, XSL, XSP, JSP, ASP, SOAP, RESTful services | + | |
- | Business-to-business | + | |
- | XML, SOAP, RESTful services | + | |
- | Database | + | |
- | Perl-DBI, Python, ADO, JDBC, GORM | + | |
+ | | ||
===== Microsoft .NET ===== | ===== Microsoft .NET ===== | ||
Software development and application delivery platform for the new century. Contains: | Software development and application delivery platform for the new century. Contains: | ||
- | C#, a “new” language for writing classes and components, that integrates elements of C, C++, and Java, and adds additional features, like metadata tags, related to component development. | + | * C# |
- | A “common language runtime”, which runs bytecodes in an Internal Language (IL) format. Code and objects written in one language can, ostensibly, be compiled into the IL runtime, once an IL compiler is developed for the language. | + | |
- | A set of base components, accessible from the common language runtime, that provide various functions (networking, | + | |
- | ASP+, a new version of ASP that supports compilation of ASPs into the common language runtime (and therefore writing ASP scripts using any language with an IL binding). | + | |
- | Win Forms and Web Forms, new UI component frameworks accessible from Visual Studio. | + | |
- | ADO+, a new generation of ADO data access components that use XML | + | |
- | How do .NET and Java EE compare? | + | |
+ | ---- | ||
+ | **Notes** | ||
+ | **C#** is a “new” language for writing classes and components, that integrates elements of C, C++, and Java, and adds additional features, like metadata tags, related to component development. | ||
+ | |||
+ | The “**common language runtime**”, | ||
+ | |||
+ | The set of **base components**, | ||
+ | |||
+ | **ASP+**, is a new version of ASP that supports compilation of ASPs into the common language runtime (and therefore writing ASP scripts using any language with an IL binding) | ||
+ | |||
+ | **Win Forms and Web Forms**, new UI component frameworks accessible from Visual Studio. | ||
+ | |||
+ | **ADO+**, a new generation of ADO data access components that use XML. | ||
+ | |||
+ | ===== How do .NET and Java EE compare? ===== | ||
+ | |||
+ | See notes | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ^.NET^Java EE^Key differences^ | ||
+ | |C# programming language | Java programming language | C# and Java both derive from C and C++. Most significant features (e.g., garbage collection, hierarchical namespaces) are present in both. C# borrows some of the component concepts from COM and VB, adds some of its own (like metadata tags), but incorporates these features into the syntax differently. Java runs on any platform with a Java VM. C# only runs in Windows for the foreseeable future. C# is implicitly tied into the IL common language runtime, and is run as just-in-time (JIT) compiled bytecodes or compiled entirely into native code. Java code runs as Java Virtual Machine (VT) bytecodes that are either interpreted in the VM or JIT compiled, or can be compiled entirely into native code. | | ||
+ | |.NET common components (aka the “.NET Framework SDK”)|Java core API|High-level .NET components will include support for distributed access using XML and SOAP (see ADO+ below). | | ||
+ | |Active Server Pages+ (ASP+) |Java ServerPages (JSP) | ASP+ will use Visual Basic, C#, and possibly other languages for code snippets. All get compiled into native code through the common language runtime (as opposed to being interpreted each time, like ASPs). JSPs use Java code (snippets, or JavaBean references), | ||
+ | |IL Common Language Runtime|Java Virtual Machine and CORBA IDL and ORB|Java' | ||
+ | |Win Forms and Web Forms|Java Swing/Java Server Faces|Win Forms and Web Forms RAD development supported through the MS Visual Studio IDE - no other IDE support announced at this writing. Swing and JSF support available in many Java IDEs and tools.| | ||
+ | |ADO+ and SOAP-based Web Services|JDBC, | ||
===== How do they Stack Up? ===== | ===== How do they Stack Up? ===== | ||
- | Both .NET and Java EE offer a similar shopping list of features. | + | * Both .NET and Java EE offer a similar shopping list of features. |
+ | |||
+ | ---- | ||
.Net | .Net | ||
- | The .NET core works on Windows only but theoretically supports development in many languages | + | * The .NET core works on Windows only but theoretically supports development in many languages |
- | .Net's SOAP capabilities will allow components on other platforms to exchange data messages with .NET components. | + | |
- | The core components of the framework (IL runtime environment, | + | |
- | How do they Stack Up? | ||
- | Both .NET and Java EE offer a similar shopping list of features. | ||
Java EE | Java EE | ||
- | Java EE works on any platform with a compliant Java VM and a compliant set of required platform services. | + | * Java EE works on any platform with a compliant Java VM and a compliant set of required platform services. |
- | All of the specifications that define the Java EE platform are published and reviewed publicly, and numerous vendors offer compliant products and development environments. | + | |
- | Java EE is a single-language platform. Calls from/to objects in other languages are possible through CORBA, but CORBA support is not a ubiquitous part of the platform. | + | |
- | Contents | ||
- | The Trouble with EJB | ||
- | Lightweight Containers | ||
- | Other Important Enterprise Technologies | ||
- | Alternatives to Java | ||
- | Things to Watch | ||
- | Module Summary | ||
+ | ===== Contents ===== | ||
+ | |||
+ | * [[#The Trouble with EJB]] | ||
+ | * [[#Better, Faster, Lighter Java|Lightweight Containers]] | ||
+ | * [[#Bigger Role for XML|Other Important Enterprise Technologies]] | ||
+ | * [[# | ||
+ | * **[[#Gazing into my Crystal Ball|Things to Watch]]** | ||
+ | * [[#Module Summary]] | ||
===== Gazing into my Crystal Ball ===== | ===== Gazing into my Crystal Ball ===== | ||
- | A 4th edition of Eckel’s book covering the new language features in Java 1.5. | + | Back in 2005 I made some predications: |
- | Consolidation and wide acceptance of MVC and ORM frameworks. | + | * A 4th edition of Eckel’s book covering the new language features in Java 1.5 came true. |
- | The rise of lightweight frameworks. | + | |
- | Penetration of AOP into mainstream OO development. | + | |
- | EJB 3.0! (see next slide) | + | |
- | One of you will get rich marketing yourself as a Java EE architect! | + | |
+ | | ||
+ | |||
+ | ---- | ||
+ | |||
+ | When I have some time I may update this presentation to bring it up to the state-of-the-art in 2009. | ||
===== EJB 3.0 ===== | ===== EJB 3.0 ===== | ||
- | Recognising that the interests of developers where poorly served by the last versions of the EJB specification, | + | Recognising that the interests of developers where poorly served by the last versions of the EJB specification, |
- | Early indications are: | + | |
- | Inspired by XDoclet (itself inspired by .NET) EJB 3.0 will make extensive use of annotations (a new feature of Java 1.5) to reduce the need for so many interface files. | + | The final spec is now in general release: |
- | Business components | + | |
- | It will be adopting some of the techniques developed for ORM for persistence support. | + | |
- | More at http:// | + | |
- | Contents | + | * EJB version 3 was released |
- | The Trouble with EJB | + | * The reference implementation is the open source Glassfish container. |
- | Lightweight Containers | + | ===== Contents |
- | Other Important Enterprise Technologies | + | |
- | Alternatives to Java | + | * [[#The Trouble with EJB]] |
- | Things to Watch | + | * [[#Better, Faster, Lighter Java|Lightweight Containers]] |
- | Module Summary | + | * [[#Bigger Role for XML|Other Important Enterprise Technologies]] |
+ | * [[#Alternatives to Java]] | ||
+ | * [[#Gazing into my Crystal Ball|Things to Watch]] | ||
+ | * **[[#Module Summary]]** | ||
===== Module Summary ===== | ===== Module Summary ===== | ||
- | Have presented the Java platform in some detail via the medium of Groovy | + | * Have presented the Java platform in some detail via the medium of Groovy |
- | Considered advanced platform features: | + | |
- | Multithreading | + | |
- | Java IO | + | |
- | Network Programming | + | |
- | Enterprise Java | + | |
- | Discussed some of the disadvantages of Java EE and introduced some hot topics for the future. | + | ===== Thank you for your patience and long attention! |
- | Thank you for your patience and long attention! | + | |
- | The End! | + | ===== The End! ===== |
- | It’s Been Emotional! | + | |
+ | ===== It's Been Emotional! | ||
+ | {{: | ||
at-m42/lecture16.1241542892.txt.gz · Last modified: 2011/01/14 12:25 (external edit)