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.

Continuum, Luntbuild, Pulse and NetBeans

Last night, I did a bit of playing with technologies new to me. First of all, I got AppFuse 2.0 running on Continuum. This was was easy enough, I just had to add <scm> information to each pom.xml. Thanks to those who recommended this approach. I thought it was a silly solution until I realized "mvn site" produced the wrong information when <scm> wasn't present for sub-modules.

Since I was playing with Continuous Integration tools, I decided to give Cerberus, LuntBuild, and Pulse a spin. My goal was to give each server the old "college try" and see if I could get them running with minimal effort. I don't know where I heard about Pulse, but it was somehow included in my tests.

Cerberus didn't work with my Cygwin/Ruby setup, so I was done with it quickly. LuntBuild worked pretty well, but the interface and configuration seemed kinda clunky. I also found it strange that it uses a 4.x version of Jetty - seems kinda old. I was surprised to see that it uses Tapestry for its web framework. Pulse was the nicest one with a kick-ass (ajaxified) user inferface, powered by Acegi, WebWork and Hibernate (according to its JARs). It was definitely the easiest to setup and use. While Pulse isn't free for commercial use, it is free for open source projects, as well as small teams.

Summary: Continuum, LuntBuild and Pulse seem to be the best tools for building Maven 2 projects. While CruiseControl works, and works well, it does require you to customize XML from the command line, whereas these tools allow you to do everything through a web interface.

Toward the end of the night, I downloaded NetBeans 5.5 and installed its Maven 2 Plugin. I was surprised at how full-featured this plugin is. I was able to build, test and run the AppFuse web modules in the embedded Tomcat without issues. It's definitely a cool plugin. As for NetBeans, it seemed pretty sluggish and I couldn't figure out how to get Ctrl+Shift+R functionality, which is a must for me these days. Also, I couldn't get the JSF support working for the AppFuse JSF Module, seemingly caused by the Maven plugin (project properties only has Maven options). Since NetBeans works so well with Maven 2, and it's much more full-featured than Eclipse, it seems natural to recommend it to AppFuse 2 users. Of course, I like IDEA a lot more, but there's no Maven 2 plugin that I know of.

Posted in Java at Nov 03 2006, 10:31:19 AM MST 17 Comments

greendimes - powered by AppFuse

greendimes greendimes is a company that helps you to stop receiving junk mail. From their web site:

There are dozens of companies that sell your name to make a buck (actually, lots of bucks). We'll make sure you're taken off their mailing lists. How?

Well, we'll call, email and write these companies to make sure they leave you alone! This isn't easy. These companies change their policies and their contact info often. And even if you do go through the effort of validating every company's policies and contact info and write to each one, you could still get junk mail from them. Why?

Because when you move, donate money to charity, buy something from a catalog or do one of a hundred other seemingly innocent things, your name gets sold! That's why we're a recurring service -- we're going to contact these companies on your behalf a LOT, just to make sure you're kept off of these lists and people stop selling your name and address.

We keep you off.
Just because you're off doesn't mean you stay off. Just about anything you do -- refinance, move, get a new credit card, etc. -- puts you back on. So, we will regularly request your information be removed from existing lists and we add new junk mailers to our list regularly.

Sounds like a pretty cool service to me.

How do I know it's powered by AppFuse? Because they're still using the AppFuse favicon, and because I recently saw they're hiring a Senior Software Engineer with AppFuse experience listed as a bonus.

Posted in Java at Oct 29 2006, 11:52:01 AM MST 3 Comments

[CSS 2006] Mike Milinkovich's Keynote

I'm sitting in Mike Milinkovich's Keynote at the Colorado Software Summit in Keystone, Colorado. Mike is the Executive Director of the Eclipse Foundation - his picture can be seen on his IT Conversations page. Mike had fun getting up here - driving through the snow - and waiting on the freeway for a couple hours while the "rock slide" was cleared.

Mike's presentation is titled "All About Platforms, Lessons learned from Eclipse". Mike used to work for Oracle, and he's been at the Eclipse Foundation for 2 years. Before that, he was at WebGain. The company that "would not believe that Visual Cafe sucked". He's been in the Tools Business for a long time, and has never bothered to learn Java. He used to do a lot in SmallTalk and that's they last time he programmed. The "repository thingy" in Visual Age for Java was his fault.[Read More]

Posted in Java at Oct 26 2006, 10:39:24 PM MDT

[CSS 2006] Day 3

This morning, I gave both my talks back-to-back and was done by noon. After lunch, I attended Scott Blum's Taming AJAX with GWT. It was a good talk with some impressive demos. I definitely need to dig into GWT more - it looks like very cool technology. I can't help but think it's the "widget framework" that JSF was supposed to be.

I was planning on heading back to Denver tonight, but it started snowing and Julie said they expect 10" in East Denver. Who knows if it'll actually snow that much (the weatherfolks are often wrong), but I don't want to be on the roads.[Read More]

Posted in Java at Oct 25 2006, 06:04:47 PM MDT

[CSS 2006] To ESB or not to ESB?

Do you have to have an ESB to have a SOA?

I'm sitting in Denise Hatzidakis's talk titled "To ESB or not to ESB" as requested by Mick Huisking. Dinese is the Chief Technologist at Perficient, Inc.. It's interesting, on her opening slide she has a @perficient.com e-mail address, as well as an @us.ibm.com address.

"SOA stands for Same Old Architecture"

This talk focuses on using an ESB and how to build it. There's a lot of ESB products out there. An ESB is not about a product - it's about what kind of connectivity you need between your systems.[Read More]

Posted in Java at Oct 24 2006, 06:08:48 PM MDT 1 Comment

Equinox (a.k.a. AppFuse Light) 1.7 Released!

This release's major new features are upgrading to Spring 2.0, Hibernate 3.2, an Ajax + Spring MVC version, an Acegi Security + Spring MVC version and Struts 2.0 as an optional web framework. It's highly likely that the "extras/security" package can be installed with other web frameworks, but it's only been tested with Spring MVC. Furthermore, this release provided all of the different combinations that Equinox provides - all 50 of them!

All of the frameworks used in Equinox, as well as most of its build/test system is explained in Spring Live. A summary of the changes are below (detailed release notes can be found in JIRA):

  • Added extras/spring-ajax with examples of ajaxified displaytag (with AjaxAnywhere), in-place editing (Script.aculo.us), in-page updates (DWR) and lightbox (Lightbox gone Wild) popups.
  • Added extras/security with Acegi Security integration for authentication and authorization.
  • Automated creation and testing of all possible combinations for distribution.
  • Converted from JSP to Facelets for JSF/MyFaces option.
  • Integrated Ajax4JSF into JSF/MyFaces option.
  • Added Struts 2.0.1 as web framework.
  • Upgraded to Spring 2.0, including improved XML syntax and JSP Form Tags
  • Added Cargo settings to pom.xml so it's possible to run web tests from Maven.
  • Changed dataSource bean to use a connection pool.
  • Added popup calendar (using jscalendar) to Spring MVC and Struts 2.
  • Added OpenSessionInViewFilter for Hibernate and OpenPersistenceManagerInViewFilter for JDO/JPOX.
  • Fixed foreign-language encoding issues with Spring's CharacterEncodingFilter.
  • Changed from DAO to Dao to be more consistent with other projects.
  • Dependent packages upgraded:
    • Canoo WebTest 1393
    • Cargo 0.8
    • Commons Validator 1.3.0
    • DWR 1.1.1
    • FreeMarker 2.3.8
    • jMock 1.1.0
    • JPOX 1.1.1
    • Hibernate 3.2
    • MyFaces 1.1.4
    • Spring 2.0
    • Spring Modules Validation 0.5
    • Struts 1.2.9
    • Tapestry 4.0.2
    • WebWork 2.2.4
  • Dependent packages added:
    • Acegi Security 1.0.2
    • Ajax4JSF 1.0.2
    • AjaxAnywhere 1.2-rc2
    • Facelets 1.1.11
    • Struts 2.0.1

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

Demos:

Thanks to all the users of Equinox for making this a great release!

P.S. I'm fully aware that this project's name conflicts with an Eclipse project. ;-)

Posted in Java at Oct 20 2006, 04:28:31 PM MDT 16 Comments

RE: Experience First-Hand the Most Productive Way to Develop Enterprise JSF Applications

In Experience First-Hand the Most Productive Way to Develop Enterprise JSF Applications, Steve Muench writes:

If you are a developer responsible for creating enterprise J2EE web applications that work with database data, this new step-by-step tutorial should be eye-opening for you.

The tutorial does indeed look nice, but at 69 (printed) pages, is it really a tutorial? Seems more like a book to me. ;-)

Posted in Java at Oct 10 2006, 06:35:28 PM MDT 2 Comments

Equinox 1.7 will include all framework combinations

Whenever I've done an Equinox release in the past, I've just uploaded the main zip file to java.net. This made it difficult for end-users because they were forced to install any optional frameworks themselves. While I've usually been successfull doing this, many users have had issues. Therefore, Equinox 1.7 will include *all* combinations as part of the release. See the Equinox Roadmap to see what still needs to be done for 1.7.

How many combinations are there? 35! That's right - there's 5 web frameworks (+ FreeMarker and Velocity for Spring MVC) as well as 5 persistence frameworks. CruiseControl is spitting out the combinations if you'd like to try them now. When I wrote the script to create everything this weekend, I was a bit worried about combining them and all getting all the tests to pass. Amazingly enough, all the tests passed on the first try. Thank you Spring, you separate layers quite nicely.

If you're interested in how this all works, take a look at release.xml. This file handles the artifact creation, as well as testing and uploading to java.net. I was hoping to create Maven 2 archetypes for all the combinations as well, but it doesn't look like it can be automated. I'd love to figure out a way generate archetypes from an existing project.

Posted in Java at Oct 09 2006, 03:59:51 PM MDT 4 Comments

MyFaces + Facelets vs. Shale

At some point, I plan on replacing the JSF+JSP combination in AppFuse with JSF+Facelets. However, I'm wondering if this is just an interim step to a more full-featured framework like Shale and its Clay templates. Has anyone out there tried both Shale and MyFaces+Facelets? If so, which one worked best for you?

Should we use Shale for the JSF framework in AppFuse or is MyFaces + Facelets good enough?

Can JSP-based components (particularly Ajax ones) be used with Clay and/or Facelets? What's the best Ajax-enabled component library available for JSF? I know there's more everyday, so I'm looking for first-hand, real-world experience here. Thanks in advance for any advice or stories you'd like to share!

Posted in Java at Oct 06 2006, 10:28:18 PM MDT 6 Comments

How do you sell good technology to average developers?

I received some interesting questions from someone who attended my talks at the Spring Forward conference last week. Below are the questions and my responses:

One of the things I'm working through in our hidebound stick-in-the-mud biggish company is: if you concoct a brilliant framework around the really right technology, how do you make it usable by mere mortals, that is average to below average developers?

Document, document, document. Assume nothing when you write the documentation (on a wiki or whatnot). Newbies love step-by-step tutorials. If your kick-ass framework is any good, you should be able to automate and hide complex pieces so they never need to know about them until they're interested.

I think AppFuse really helps in this regard, but I'm dealing with people who most naturally will use ColdFusion or ASP with no separation of concerns whatsover. They are are pretty blown away by lightweight J2EE and thus tend to reject it out of hand as being hippies' wet dreams.

I had a class a couple weeks back that was 1/2 PHP developers. They didn't like the idea of Java either - mainly because they're used to doing UI development and such. PHP, CF and ASP developers are UI developers that would prefer not to compile/deploy code. So you need to do things that make their job easier and allow them to be UI developers. Create a Generic DAO and Manager using Generics that allows them to CRUD any object - so they won't need to write backend code. Heck, you might even separate responsibilities so they're doing mostly web development. Of course, with web development, you'll still need to write Controllers and such. If you can use something like Maven 2 + the Jetty Plugin, there's no deploy cycle. Save, refresh your browser and voila - change is there. That's what these folks are used to and that's what they want to see when developing Java. Getting rid of the deploy cycle is an excellent idea IMO.

What do you think? How do you make Java development easier for developers of a company "switching to Java"? I've had a fair amount of clients in recent months switching from .NET or PHP to Java. It's a rare case that developers are actually happy about the move. Of course, when I'm done telling them about all the great frameworks and tools they can use, they're even more petrified. There's just too many for them to keep track of, especially if they're new to the stuff. AppFuse definitely simplifies things, but I doubt it makes development as simple as plain 'ol PHP or .NET. Then again, after you learn how to use the frameworks in AppFuse, it can be extremely productive to develop with (and scalable to boot!).

Posted in Java at Oct 06 2006, 07:31:27 AM MDT 3 Comments