Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.
You searched this site for "java". 1,588 entries found.

You can also try this same search on Google.

[ANN] Struts Resume 0.9 Released!

Struts Resume 0.9 is a major improvement over 0.8. Not only did I upgrade all the code to use AppFuse 1.4 (release notes), but I also removed Struts from the services layer. Moreover, you can actually enter almost all of the pieces of a resume and render it in HTML and Word format. The resume-entry piece (and sections you can enter) is largely based on what Monster.com uses. I may add other sections in the future (i.e. awards and publications).

The main reason this is not a 1.0 release is because an administrator is the only one who can edit the HTML template - and the Word/RTF template is not editable online. Allowing a user to override the default template(s) will be the primary goal in 1.0.

Here's a specific rundown of all the changes from the changelog:

Download (~10.5 MB for src, ~5.4 MB for bin), Online Demo and Homepage.

Posted in Java at Apr 05 2004, 05:02:22 AM MDT 12 Comments

WebLogic Workshop's NetUI and Page Flow

FYI...

April Denver BEA User's Group Meeting

Tuesday April 6th 6:00pm
Tattered Cover Down Town
1628 16th Street
Denver, CO, 80202

This months meeting will focus on WebLogic Workshop's NetUI and Page Flow technology that is built on top of Struts. We have a special treat in that Eddie O'Neal who is the BEA Engineering technical lead on NetUI and Page Flow is comming to talk with us. The primary discussion will focus on Weblogic Workshop and NetUI technology which is built on top of Struts 1.1. We will look a how these two relate and talk about the additional features NetUI provides on top of Struts like the additions to the programming model and the richer data binding. We will also look at a Struts variation of the petstore application that was migrated to a Page Flow.

AGENDA

5:30 - 6:00 Registration, Networking, Refreshments
6:00 - 7:00 WebLogic Workshop NetUI and Page Flow - Edie O'Neal
7:00 - 8:00 Field Secrets the next installation - John Funk
8:00 - 9:00 Further discussion at the Wynkoop Brewery and Raffles

Technology followed by beer is always a good thing!

Posted in Java at Apr 04 2004, 11:39:02 AM MDT 8 Comments

NYC Seminar: Flex and WebWork

Christophe talked about Flex, it's architecture and built the data grid for the Flex pet store in a matter of minutes. After seeing this presentation, I definitely think Flex is wicked cool. It's too bad that it's price tag is $6K/CPU. However, Vic is probably right - this stuff should be the next generation of webapps. I'd order the developer CD but it sounds like something I'd play around with and never use. It looks so easy to use that I'm willing to bet I can wait until a client demands it - then learn it in a matter of days - or even hours. I did end up asking Christophe about unit testing these Flash UIs. They're working on it, but nothing exists yet.

Now Jason is up - the last session of the day.

What is WebWork 2.0?

  • The 2nd generation of WebWork
  • A web MVC Framework
  • a wrapper on top of a generic Command Pattern implementation (XWork)
  • A small but powerful tag library

XWork is where Jason spends most of his time. XWork is a generic command pattern implementation. Actions are command objects in XWork. XWork adds advanced features.

  • Interceptors: setting parameters, workflow, etc.
  • Results: includes one for chaing to another Action
  • Simple IoC container
  • Powerful expressional language (OGNL)
  • Flexible type conversion
  • Metadata driven validation framework

What does WebWork add?

  • Adapter for Http request/response
  • Integration of Session / Application Scopes
  • ServletDispatcher translates HTTP Requests into Action execution
  • Request parameters passed to Action Results
  • Supported view technologies: Velocity, Freemarker, XSLT Jasper Reports, JSP

Action is a simple interface with an execute method. ActionSupport is a useful base class.

I gotta say - one of my favorite things about WebWork is the fact that all its UI tags are built using Velocity. This means that you (the developer) have full control over what HTML is generated from the JSP tags.

Interceptors have been nicknamed "Domain AOP." Interceptors allow custom code into the call stack and much of the WebWork "magic" happens with Interceptors. WebWork has a number of built-in interceptors:

Setting Parameters

  • ParameterInterceptor
  • StaticParameterInterceptor
  • ChainingInterceptor
  • ConversionErrorInterceptor

Defining Workflow

  • DefaultWorkflowInterceptor
  • PrepareInterceptor
  • ServletConfigInterceptor

Preventing duplicate posts

  • 2 types of token interceptors

Interceptors can be grouped into named Interceptor Stacks (i.e. defaultStack, validationWorkflowStack).

2 types of actions possible: Model-Driven vs. Field Driven (merging of Action and ActionForm). ModelDriven Interface - public Object getModel(). Porperties of the model will be available as simple properties - "user.name" becomes "name". To use, you have to add ModelInterceptor to your WW config file.

OGNL (Object Graph Navigation Language). An expression and binding language for getting and setting properties of Java objects. Normally the same expression is used for getters and setters.

XWork Validation Framework

  • XML based. Validation file in the same package as the class. Defines one field validator and the error messages to add if it fails.
  • Bundled validators - supports required, range, email, url and OGNL Expressions (very powerful).
  • JavaScript support recently added for simple validators - nothing for expressions though (tough to do).

Doh! Jason's demo didn't work. I did a lot of demos in my preso so I couldn't help but say "shoulda used a Mac!" These PowerBooks might be a bit slow for development, but they're definitely nice for this traveling salesman thing.

This is where you get your money's worth: All the speakers and attendees comparing frameworks, talking about their problems and trying to figure out a better way.

Posted in Java at Apr 03 2004, 04:13:54 PM MST 8 Comments

Saturday Afternoon

I have a whole bunch of notes from watching all the speakers this morning, but there's no point in me regurgitating all the stuff that Jason has written. Unfortunately, I don't have unlimited bandwidth on my phone - so this post (and checking my e-mail) will probably cost me $20. I finished my talk about a half hour ago and damn it feels good. All my worrying from the last week is over. I'm done. Phewfta. ;-)

Below are my thoughts on the speakers so far. I'll update this for Vic (speaking now) and Jason as they speak.

Clinton Begin: - iBATIS. He actually works for ThoughtWorks in Calgary, which I didn't know. I've met Ted, Jason, Rod and Tom this morning. All very cool guys. It's funny to see Jason and Ted sitting at the same table - I thought they were mortal enemies. ;-) There's not a whole lotta folks here - approx. 30 right now. That's good since this room doesn't look like it'd hold much more than that.

Clinton wrote SQL Maps because Data Models are rarely perfect. He's actually using Hibernate right now - b/c his team has control of the database.

Clinton is toying with the idea of using something like XDoclet to generate SQL Maps.

Caching - on a single box OSCache is the slowest caching mechanism. It'll actually cost you more than it helps you. For distributed systems, however, it's the only choice. He doesn't know why it's so slow - it just is.

Rod Johnson - J2EE without EJB. Rod actually flew in from London just for this event. It's his first time to NY, as it seems to be for many speakers here. I took a lot of notes from Rod's presentation. He was mainly advocating that you can write fast, scalable J2EE apps without EJB. He didn't cover Spring much, but did point out that Spring offers most of EJBs built-in services. After watching Rod's presentation, the only reason I can see for EJBs is for distributed systems. However, these days it seems that more folks are using web services instead of RMI.

Ted Husted - Commons Chain. Ted's presentation was quick (1/2 hour) and I missed most of it, so I can't really comment on it.

Vic Cekvenich - basicPortal RIA. Vic's presentation was titled "basicPortal RIA" but that's not what he covered. He ended up talking about requirements, project management and good programmers. Damn, I've heard this talk before - nothing new here. It's good stuff though, and an enjoyable talk.

Vic's predication: in the next 12 months, declarative languages (like Flex, XAML and XUL) will be next generation of MVC frameworks. He thinks it's very liberating to not write HTML anymore. As I said yesterday - you're still writing XML, so as a developer I don't think you have to learn that much. He just showed us some Flex code - it's pretty simple stuff. 10 lines of code to declare a data grid (like the display tag) and load its data from a DAO.

I asked Vic if calling a DAO from the View (Flex page) is a bad thing. Isn't that like using scriptlets in your JSPs to call your DAO? I mentioned that the design pattern bigots would bash all over this. He said - "screw the design patterns, this works." I suspect the next guy (Christophe Coenraets on Flex) might promote cleaner design patterns. This should be fun - a bunch of open source fans about to be presented with a closed-source, expensive product.

Posted in Java at Apr 03 2004, 01:37:16 PM MST 1 Comment

Saturday in New York

It's a drab and dreary day in New York City - as evidenced by the picture below. The hotel is interesting - with rooms just barely big enough to fit the queen size bed, and hardly enough cold water to go around. That's right, there's no shortage of hot water - just a lack of cold. Oh well, at least it's not ice cold like that summer in Moscow when they turned the hot water off for 4 weeks. Braving the rapids we called it. The hotel has no high-speed internet, only dial-up. Thank God for the Starbuck's HotSpot across the street.

8th Ave and West 35th
8th and West 35th

Last night I hung out with Vic, Clinton and Steve. There were lots of discussions on Flex and rich clients. Vic thinks that rich clients like Flex are the next big thing. I don't disagree, but he thinks they'll replace all HTML clients - and eventually the browser. I have a hard time believing that - though it would be nice to see. To me, whether I'm writing HTML or Flex - it's all just angle-bracket syntax to create UIs. I'll do whatever my clients want - and I'm willing to bet that most won't care for a Flash UI for quite some time.

Posted in Java at Apr 03 2004, 05:57:50 AM MST 1 Comment

Off to NYC

In the midst of getting all my ducks in a row for New York City - I thought I'd share the latest schedule. It doesn't seem to be posted anywhere else, so why not. First of all, it's at the New Yorker Hotel and here's the latest line-up:

  • 9:15 - Rod Johnson
  • 10:15 - Clinton Begin
  • 11:15 - Ted Husted
  • Lunch
  • 1:30 - Matt Raible
  • 2:30 - Vic Cekvenich
  • 3:30 - Christophe Coenraets
  • 4:30 - Jason Carreira

Hope to see you there!

Posted in Java at Apr 02 2004, 03:33:21 AM MST 7 Comments

Rave in Denver

From Kris Thompson:

Sun invites you to participate in a free demo of Java Studio Creator (a.k.a. Rave) next Wednesday and/or Thursday.

Hmmm, the word free seems to imply they're going to charge for this sucker. It's gonna be a Java-filled month of April for me. This weekend is the NYC Seminar, next week I'm training folks on Spring, Struts, Hibernate and AppFuse and then the week after I'm in Orlando for the MySQL Conference and JUG Meeting. When it rains, it pours...

Posted in Java at Mar 30 2004, 10:53:29 PM MST 3 Comments

Struts Menu 2.2 Released!

View changelog or download. New features in this release include a EL tag that allows JSTL's EL expressions in all attributes, as well as the ability to use Struts Menu outside of a Struts application. I also took the time to add a database-driven example to the sample app.

For the database-driven menu (as well as the app I'm writing for Spring Live) - I'm using HSQL. I never even touched the sucker before last week and I gotta say - damn it's easy. Just drop the JAR into WEB-INF/lib and when you make a database connection - it'll create the database on-the-fly. Even better, if you're using Hibernate, you can set a property (hibernate.hbm2ddl.auto=create) and it'll create your tables on-the-fly too. Cool stuff - HSQL rocks for sample apps. I don't know if it's production worthy - but I certainly like what I've seen so far.

Posted in Java at Mar 30 2004, 07:57:50 PM MST Add a Comment

Macromedia Flex 1.0 Released

Macromedia has released Flex 1.0. Flex is basically a server plugin that allows you to write XML to render flash. Here's the marketing lingo from their product page:

Flex is a presentation server installed on top of a J2EE application server or servlet container, a rich library of user interface components, an XML-based markup language used to declaratively lay out these components, and an object-oriented programming language which handles user interactions with the application. The result is a Rich Internet Application rendered using Flash Player and developed using industry standards and a development paradigm familiar to developers.

The major problem with Flex is its price.

Flex presentation server pricing starts at $12,000 for two CPUs and includes annual maintenance.

Macromedia's take on this seems to be "its an evolutionary step in web application design and development" - so $12K is a small drop in the bucket. Sun claims the same for JSF, but you don't see a hefty price tag on that sucker. What Macromedia doesn't seem to realize is that its important to market to developers. If you can inspire the developers to love your product - it's only natural that it will gain more traction. With a price of 12K and no free trial (CD by mail) - good luck on getting developer support.

Of course, as an independent consultant, I probably have a scewed perspective. Maybe the corporate drones like getting their development platform and tools shoved down their throat.

Posted in Java at Mar 29 2004, 07:36:10 AM MST 9 Comments

SiteMesh passed the 10 minute test

I decided to go out on a limb this evening and give SiteMesh a run for its money. The first warning sign was that the documentation refers to version 2.0.2, while the downloads section refers to version 2.0.1. So I proceeded to download 2.0.1. I promptly noticed that the install guide indicated I needed to download SiteMesh's two TLDs and configure them in my web.xml. Blech - this is so year 2000 - most modern containers support loading taglibs from JAR files with a URI.

So I did a good ol' cvs co of sitemesh from java.net. First of all, I'd like to say kudos to java.net and their CVS repositories - they've been rock solid for the few weeks I've used them. After checking out sitemesh, the first thing on my agenda was to give it the tried n' true ant test. This means I navigate to the sitemesh folder and simply type "ant". At this point, I should get one of two things - a BUILD SUCCESSFUL with a JAR or a help message telling me what I should type. I got the former, which I prefer.

After this, I integrated it into my app using the decorators documentation and deployed it. At first, I received the lovely ol' "getOutputStream() has already been called for this response" error, so I hacked PageFilter.java to use PrintWriter writer = response.getWriter(); instead of PrintWriter writer = new PrintWriter(response.getOutputStream());. Build, copy, package, deploy and voila - it all worked!! Wow that was easy. ;-)

Here's the weird part. I decided to reverse my hack on PageFilter.java to prove that I'd actually fixed the bug. Now I'm back to the original code I got from CVS and I can't get the getOuputStream() error to rear its ugly head. Doh!! This experience begs the following question.

Is SiteMesh stable enough on Tomcat 5 that I can should use it in my Spring Live sample app?

SiteMesh definitely passed my 10 minute test, we'll see if it holds up for the long haul. So far, I'm quite impressed with its easy configuration and quick implementation. I especially like that you can literally guess at it's syntax and you'll get it right. Maybe I was just lucky... heh

P.S. You should probably know I'm a big fan of Tiles. I wonder if SiteMesh will let me switch a decorator on the fly like Tiles does?

Posted in Java at Mar 24 2004, 12:07:56 AM MST 16 Comments