aspose file tools*
The moose likes OO, Patterns, UML and Refactoring and the fly likes Java Application Architecture book question - applicability beyond Java? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » OO, Patterns, UML and Refactoring
Bookmark "Java Application Architecture book question - applicability beyond Java?" Watch "Java Application Architecture book question - applicability beyond Java?" New topic
Author

Java Application Architecture book question - applicability beyond Java?

Brian Burress
Ranch Hand

Joined: Jun 30, 2003
Posts: 123
Mainly a question for Kirk, but for anyone else who has seen the book I welcome input!

I see one review posted on Amazon for this book and the reviewer is of the opinion that the book topics work for .NET too.

Can you provide your perspective on how readily the book topics apply to .NET and potentially other languages?

If so, do you have any plans to possibly "extend" the book by providing any code examples, etc in other languages? Under .NET, C# is really close to Java but especially for some of the subtle differences I imagine examples could be very helpful!

Thanks!
Kirk Knoernschild
author
Ranch Hand

Joined: Apr 16, 2012
Posts: 41
Hello Brian,

Great question! The topics in the book apply to any language, including .NET. The book defines the unit of modularity on the Java platform as a JAR file and all examples in the book use Java. It's very easy to extend these examples, using the .NET assembly as the unit of modularity and porting the example code to C#. I've been contemplating this, but as of yet, have not done it. Whether or not I do this depends on interest from the .NET community. If you read the excerpt from the book (cited below), especially Chapter 3, I think you'll see how easy it is to think of this in terms of .NET.

Visit the book's website at modularity.kirkk.com where you can review all 18 patterns and download an excerpt of the book. There is also a mobile web application available that you can take with you wherever you go.

--kirk

Brian Burress
Ranch Hand

Joined: Jun 30, 2003
Posts: 123
Kirk,

Thank you for the reply. The example does help.

Kirk Knoernschild wrote:
It's very easy to extend these examples, using the .NET assembly as the unit of modularity and porting the example code to C#. I've been contemplating this, but as of yet, have not done it. Whether or not I do this depends on interest from the .NET community.


This one is a catch-22. "Java" is in the title, so there may be a portion of the .NET community that won't notice this. Not sure what that portion is. I recently transitioned to a new company and am getting on board with .NET and hope to not lose my Java abilities in the process, hence am still watching things here.

Will take a closer look at the book information.

Good luck with the sales!

Kirk Knoernschild
author
Ranch Hand

Joined: Apr 16, 2012
Posts: 41
Hello Brian,

You make a valid point. Though I hope the ideas penetrate the .NET market, they may not. The GOF book used all C++ coding examples, I believe. Of course C++ wasn't in the title.

Given that the book is a bit different than most other books on architecture, I wanted to be as concrete in the discussion of modularity as I possibly could, without tying it to a specific framework. Had I not chosen a specific language, I feared the conversation would have been way to conceptual to make it applicable. So I went with Java. Hopefully, the larger development community will discover these ideas and the demand to discuss these ideas in other languages will surface.

Likewise, I wanted to make sure that the book was available to the broader Java community, not just those using OSGi. In a nutshell, that's the reasoning behind the book.

Visit the book's website at modularity.kirkk.com where you can review all 18 patterns and download an excerpt of the book. There is also a mobile web application available that you can take with you wherever you go.

--kirk
Billy Tsai
Ranch Hand

Joined: May 23, 2003
Posts: 1304
Does book offer information about how to design an application architecture that would work in a global scale distributed envrionment with hundreds of applicaion servers?


BEA 8.1 Certified Administrator, IBM Certified Solution Developer For XML 1.1 and Related Technologies, SCJP, SCWCD, SCBCD, SCDJWS, SCJD, SCEA,
Oracle Certified Master Java EE 5 Enterprise Architect
Kirk Knoernschild
author
Ranch Hand

Joined: Apr 16, 2012
Posts: 41
The book doesn't talk distributed environments, clustered environments, failover, etc. It focuses on how to design software systems with modular architecture. Certainly, a modular architecture would be beneficial given the environment you describe below.

Visit the book's website at modularity.kirkk.com where you can review all 18 patterns and download an excerpt of the book. There is also a mobile web application available that you can take with you wherever you go.

--kirk
David Sachdev
Ranch Hand

Joined: Oct 18, 2011
Posts: 32
What are your thoughts on how design patterns and modularity apply to different language types such as dynamic languages and functional languages. You mention that you believe that the concepts apply to .NET just as easily, but I know there are many people that would say that the GOF book doesn't apply in quite the same way to functional programming and that you need to get in tune with a different way of thinking to design properly for some of the functional languages. Do many of the concepts extend well to a polygot world, or would you say the focus is to really do a tremendous job in the OO world. I can see that trying to cover to much means that you can't cover anything very well.

If the answer to the above is that it is mainly focused on OO concepts, are there aspects of the book that you thing easily extend beyond the OO world?
Kirk Knoernschild
author
Ranch Hand

Joined: Apr 16, 2012
Posts: 41
David,

As the JAR file is the unit of modularity on the Java platform, the concepts extend to a polyglot world on the JVM since all languages are compiled to bytecode and can be packaged in a JAR file. Because Scala, Groovy, and Clojure are JVM languages, the unit of modularity is still the JAR file. When looking at other platforms, it's a matter of finding the right unit of granularity that represents a module.

In general, all of the book extends beyond OO because the modularity patterns are not about how to apply OO concepts, but how to design modular software. Any technique that helps you decouple modules, manage dependencies, extend a module with new capabilities, etc. will help. The book uses OO concepts to decouple and design modular software. But any concept that helps you decouple modules is applicable. For instance, you could implement several of the patterns using AOP. Or if you're building a system entirely in Groovy, you'd use separate OO concepts since Groovy is a dynamic language.

-kirk
Jignesh Patel
Ranch Hand

Joined: Nov 03, 2001
Posts: 626

Kirk,

Interesting thought, I am inline with you. Modularity is a modularity, what it has to do with language(.Net or Java). But it has to do with framework, to bring smart and average engineer in same page. And the best way of achieving Modularity is through usage OSGI. Does the book follows same root? Do you expand it to explain the usage of AOP in modularity?

As you mention books goes beyond OO concepts. However I assume the nucleus of modularity must be OOP. Do you share same thoughts.

Seems you are creating new patterns in the context of modularity. In that case, I believe the GOF patterns can be applicable in side a module but not between the modules.

-Jignesh
David Sachdev
Ranch Hand

Joined: Oct 18, 2011
Posts: 32
Thanks Kirk, I'll have to check out the free chapters this evening when I get home.

Kirk Knoernschild wrote:David,

[...]

In general, all of the book extends beyond OO because the modularity patterns are not about how to apply OO concepts, but how to design modular software. Any technique that helps you decouple modules, manage dependencies, extend a module with new capabilities, etc. will help.

[...]

-kirk
Billy Tsai
Ranch Hand

Joined: May 23, 2003
Posts: 1304
Usually application architecture these days is deployed into distributed envrionment, even deployment of enterprise application(s) is done in a cluster with several application servers, so the design and development of an application should take distributed envrionment into consideration.
 
 
subject: Java Application Architecture book question - applicability beyond Java?