Matt RaibleMatt Raible is a writer with a passion for software. 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 "framework". 558 entries found.

You can also try this same search on Google.

Scaling with Rails

Whenever I talk to developers in the Java community about Rails, the first question out of their mouth is usually "But can it scale?" Today, David has written a nice post titled It's boring to scale with Ruby on Rails.

The one thing that I see time and time again is that Java developers don't seem to realize that some of the highest traffic sites on the net are using LAMP stacks similar to what Rails advocates. IMHO, I don't think "Rails can't scale" is a valid argument. In fact, I don't know if there's any argument or way to put down Rails anymore.

As a developer, my guess is the rates for programming in Ruby developer are less than for programming in Java (unless you're a Ruby Superstar of course), so that's one reason not to program in it. However, since Rails is one of those new bright and shiny things, chances are you might be able to get high rates for it. As far as Enterprise Adoption of Rails, unfortunately I think that's still pretty far on the horizon. I think the hardest part is convincing management that they'll be able to find developers to support it. Mind you, I didn't say good developers, just developers. Period. This is information I've gathered from talking to my Java developer friends.

Try convincing a Fortune 500 company to program in Rails vs. Struts and they'll probably choose Struts because there are thousands of Struts Developers. Is this a good decision on their part? I don't think so. I think it's more important to hire smart people that can learn a technology, rather than hiring those that know a technology. Of course, if someone knows a technology really well, there's probably no harm in hiring them.

I think Rails can become a real contender in the Enterprise if managers can be convinced that it'll be easy to maintain Rails application. Remember that most of software cost is maintenance. Because of this, the whole "it's super productive to develop with" doesn't matter so much - does it? Are Rails applications easy to maintain? My guess is yes, but how do you convince CTOs and CIOs? Another thing I think Rails needs for Enterprise Adoption is good tool support. Drag and Drop type of stuff. Why? Because management loves that stuff (because then they can develop apps) and it's a great sales tool. ASP.NET has been successful because of Visual Studio, not because of its ease-of-use and simple syntax.

Will I learn Rails and use it to develop applications? I certainly hope to, but it's hard enough convincing companies to use something other than Struts - so I don't know if I'll have much luck in selling Rails. The one cool thing about my new job at Virtuas is its an open source company, not just a Java open source company. This opens the doors for me to learn about Rails (and others) and compare them to Java Web Frameworks.

Update: Aaron Rustad has written an interesting article for DeveloperWorks that compares Rails to Struts+Hibernate: Ruby on Rails and J2EE: Is there room for both?

Posted in Java at Jul 12 2005, 08:45:26 AM MDT 28 Comments

eXtremeTable - another table tag for sorting and paging

From the AppFuse mailing list and the Spring Forums, I learned about eXtremeTable. This JSP Tag looks similar to the Display Tag, except that it includes support for checkboxes and filtering columns out-of-the-box. If you've used this tag, please let me know how it's working for you.

eXtremeTable Demo

Posted in Java at Jul 11 2005, 07:33:47 AM MDT 26 Comments

Web Framework Comparison Whitepaper

Working at Virtuas in June was really a lot of fun. We worked a fair amount preparing for JavaOne, and also found time to work on a number of whitepapers. These whitepapers are part of an Open Source Landscape Series that has been posted to Virtuas's site. For your convenience, here's a current list:

In addition to the whitepaper, I also wrote an article for JDJ that'll be showing up in the July issue.

Posted in Java at Jun 30 2005, 07:54:10 PM MDT 8 Comments

[JavaOne] Web Frameworks and Birthday Celebrations

Yesterday was a fun afternoon. James Goodwill and I sat in the same room for 3 hours and watched 3 different presentations: Tapestry in Action, JSF and Spring and the Web Framework Smackdown. The Web Framework Smackdown was particularly enjoyable. It was great to see all the framework guys "duke it out" and there were plenty below the belt comments. After that, we hit a bunch of the Birthday Celebration festivities, including Free Booze, an Art Auction and Dennis Miller. Unfortunately, we missed Zepperella - an all-female Led Zeppelin cover band.

Following JavaOne festivities, we met up with the Geronimo guys - only to discover they had just passed the TCK for J2EE 1.4. This resulted in many hours of celebrating and good times. As usual, I took plenty of pictures.

James and Floyd

Today I slept in because I know I won't get any sleep when I get home (parents with small children hardly ever get to sleep much). I attended the Web Tier Expert Group meeting this afternoon, which was really great. We had folks from JSF, JSP and the Servlet teams, all trying to figure out what's next and what we need to do to make web development in Java easier. There were a lot of great ideas, and the next versions of all 3 specs should really improve things.

Posted in JavaOne at Jun 30 2005, 07:44:37 PM MDT Add a Comment

[JavaOne] Programming Puzzlers with the Google Guys

I'm sitting in a session titled "Yet More Programming Puzzlers" by Joshua Block and Neal Gafter. The other two sessions I chose for this time slot were Groovy and EJB 3. The main reason I chose this session is I've seen these guys in action before and they're excellent speakers. As part of this conference, I'd like to learn a bit about technology - but I'm more interested in becoming a better speaker. This is only my second of the day, with the first being the general session this morning. The afternoon has been spent networking, doing some Virtuas booth time, and presentation a short talk on AppFuse on the java.net booth.

In other news, it's pretty cool to see that BEA is going to start supporting Spring and Struts in its tools and servers.

The BEA WebLogic Workshop and other tools will be designed to allow applications to be built or blended from leading open source frameworks, including Apache Beehive, the Spring Framework and Apache Struts, and can then be deployed on BEA WebLogic Server. BEA will also certify the BEA WebLogic Workshop tools for Apache Geronimo and Apache Tomcat.

The Google Guys session? Entertaining and packed. All chairs were filled and many people were standing in the back and on the sides.

Posted in JavaOne at Jun 27 2005, 04:19:38 PM MDT 1 Comment

[ANN] Equinox 1.4 Released

This release is mainly to support Spring 1.2.1 and Hibernate 3.0.5. The default database is now PostgreSQL because of an issue with Hibernate 3 and HSQL. All of the frameworks used in Equinox, as well as its build/test system is explained in Spring Live. Detailed release notes are below:

- Added "typeMismatch.java.util.Date" key to messages.properties (for Spring) to display a friendly error for invalid dates.
- Changed to use PostgreSQL as the default database because of an issue with HSQL and Hibernate 3.0. Read more »
- Added "clear" target to build.xml for clearing out the database.
- Added MySQL JDBC Driver and jdbc.properties.mysql for easy switching to MySQL.
- Changed UserWebTest (jWebUnit test) to get lastInsertedId from UI using HttpUnit rather than using UserManager (Richard Easterling).
- Changed spring-sandbox.jar to springmodules-validator-0.1.jar since Commons Validator support for Spring has moved to the Spring Modules project.
- Changed all Spring XML files to use new "value" and "ref" attributes.
- Dependent packages upgraded:

  • Cargo 0.5
  • Log4j 1.2.9
  • Hibernate 3.0.5
  • iBATIS 2.1.0
  • OJB 1.0.3
  • Spring 1.2.1

Download. For more information about installing the various options, see the README.txt file.

Demos:

The basic Equinox download contains all the various web and persistence framework options in the "extras" folder. If you have issues replacing the web or persistence framework (or both), please enter an issue in JIRA and I'll build and upload a customized version for you.

Posted in Java at Jun 27 2005, 06:27:23 AM MDT 5 Comments

RE: AppFuse, 'tool' of experts

I'm please to say that I've been biled yet again. The first time wasn't so bad, and this time seems pretty mild too. There's no mention of asshat, chozgobbler or turdburglar in the whole post, which is somewhat disappointing. Nevertheless, it's what I've come to expect from a guy who sallies car bombs and dances like a sissy.

Regardless of the lack of bile in Hani's post, he does bring up some good points. Let's take a look at them individually:

  • IzPack and MyJavaPack: the progress bar doesn't work, and the installer downloads everything rather than just including/installing it all.
    • To be honest, I didn't know it was possible to pack up everything and skip the internet download part. I'll definitely look into fixing this.
  • You must have Tomcat installed to work with AppFuse.
    • This is true, and I've thought about changing it to be Resin friendly, or possible Orion friendly, but there simply hasn't been any demand. Of course, Orion isn't that attractive to many folks because it doesn't even support Servlet 2.4. Maybe you should crackin' on that Hani! Or maybe you just like living in the dark ages with your affections for EJB 2.1, Servlet 2.3 and WebWork 1.4.
  • When creating a new project, you get prompted for the package name twice.
    • This is true, and something we should fix. The major reason we haven't is because I didn't want to distribute a 2MB BeanShell JAR that would support the 3 lines of code to fix the problem. I guess I should bite the bullet and add the bloat, or figure out a more elegant way to fix the problem. Issue #75.
  • Project generation auto-detects MySQL when you don't have it installed.
  • I'm a web monkey.
    • True, but that's cool now with Ajax and all.
  • Half the build targets don't work.
    • I think this is more like a handful don't work, but good effort. I agree we should remove the install-* targets when installing a web framework. Issue #76.
  • Every object creates builder objects in hashCode and toString.
    • This is true, and I've seen no performance implications from it. In reality, these are a product of the commons-lang project, as well as Commonclipse. We should probably change these to use smarter methods like the ones IDEA generates. It'd be nice if Eclipse has hashCode() and equals() method generation like IDEA.
  • The project's directory layout is bound to confuse a seasoned webapp veteran.
    • The directory structure is largely based off the example app in Java Development with Ant. Since AppFuse uses Ant, I figured it was a good idea to use a "best-practices" structure like Erik describes in his book. I've often thought about consolidating the 3-source tree, 3-test tree directory structure to one, but users are very attached to the current setup. Maybe for 2.0.
  • XDoclet generates web.xml.
    • I agree that using 11 XML fragments to generate 1 XML file is a little ridiculous. You're right - developers should know how to write a web.xml and what goes where. Issue #77.

Thanks for the feedback Hani - sounds like I owe you a car bomb or two at JavaOne. ;-)

Posted in Java at Jun 22 2005, 10:41:03 PM MDT 17 Comments

Bike to Work Day

It's another Bike to Work Day in Denver and I'm missing two key ingredients: a bike and an office to ride into. It's funny to look back at last year and see that my first day with OpenLogic was Bike to Work Day. This year, I'm again starting a new gig and working from home (much like last June). The good news is we'll be moving into fancy new offices (in the swanky Tabor Center) at the beginning of July.

I've been looking at new bikes, but haven't bought one yet because I'm going to be traveling so much in the next couple of weeks. NYC this weekend (wedding), San Francisco next week, followed by a week of vacation at the cabin in Montana. It'll be pretty cool to come back from that and move into my new office at Virtuas (yeah, a *real* office with a window seat!). I'll likely be forced to buy a bike then - driving to work in the summertime just isn't right.

Posted in General at Jun 22 2005, 08:23:46 AM MDT 8 Comments

[ANN] AppFuse 1.8.1 Released

This release is mostly a bug fix release with no new features. It also includes many upgrades to the core libraries (Hibernate, Spring, iBATIS, MyFaces). Thanks to all the sponsors who have contributed products and free hosting to the AppFuse project. You guys rock!

To see how AppFuse works, please see the following demos:

Comments and issues can be sent to the mailing list or posted to the AppFuse Issue Tracker.

Posted in Java at Jun 15 2005, 11:00:42 PM MDT 8 Comments

[DJUG] Rhythm and Developing a Successful Open Source Strategy

Tonight looks like it's going to be a good Denver JUG meeting. The Basic Concepts speaker (Brian Boelsterli) is an old friend of mine and one of my mentors from way back in 2001. He taught me a lot about independent consulting, open-source and software development processes. I expect his talk on his Rhythm: an Agile Execution Framework to be excellent. Here's the summary:

Wouldn't it be nice if you could bring to the table a simplified list of practices that you can plug-into your 'Ecosystem' with tremendously successful results? Say, for example, 169 successfully completed iterations! When you think about spinning iterations, once you complete 10-12 of them, you reach your pace, your hearbeat, your Rhythm. This has been our experience!

Come see how you can plug-in 'Rhythm' into your organization and immediately impact your organization with achievements and successes you've never imagined your team could accomplish.

Following Brian is Lajos Moczar talking about Creating A Successful Open Source Strategy. With my new venture at Virtuas, this talk will definitely be interesting since it aligns with what we're doing for organizations.

In recent years, we have seen not only an explosion in the quality and quantity of open source software (OSS), but also a dramatic rise in its usage. These trends bring new challenges to adopters and evangelists of open source software as OSS is proving to be true alternative to traditional commercial software. As developers, many of us have the unique chance to demonstrate to our organizations that OSS is indeed mature enough to power an enterprise. What is important, however, is to have a solid foundation of principles to guide us through the maze of OSS choices. In this talk, I'll present my own set of guidelines that can help you make sense of the field, avoid common pitfalls, and create a successful OSS strategy.

Of course, the best part of these meetings is the networking afterwards at Rock Bottom. ;-)

Posted in Java at Jun 08 2005, 08:21:53 AM MDT 2 Comments