Archives now available
I finally got enough motivation to spend 5 minutes and make my archive page presentable. Enjoy! View source for the CSS. Most of the work on this page is accomplished with a macro in Roller: #showBigWeblogCalendar().
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 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.
I finally got enough motivation to spend 5 minutes and make my archive page presentable. Enjoy! View source for the CSS. Most of the work on this page is accomplished with a macro in Roller: #showBigWeblogCalendar().
When I go to new clients, I either have to install Eclipse, or help others configure Eclipse with cool plugins. So I made my own download of my favorite Eclipse plugins. If you want it, download version 1.0 from SourceForge. It includes the following:
) - XML Editor
) - General Syntax Highlighter - for JSPs, HTML, CSS, etc.
) - Source Code Formatter
) - JSP Editor
) - JavaScript Editor
) - Open Explorer/Finder
) - run and debug Tomcat
Installation: Unzip to where ever you have Eclipse installed. I use c:\Tools\eclipse on Windows.
I don't really use XMLBuddy because it doesn't allow spaces (only tabs), but I suppose it's better than nothing. The built-in Ant Editor has the same behavior (tabs only). I'd love to find a plugin that gives code-completion for XDoclet when typing JavaDocs, but I couldn't find one. Sure, there's JBoss-IDE (which is just a bunch of Eclipse plugins), but that only has jboss-specific tags - no @hibernate, no @struts.
NOTE: Many of these plugins didn't work on Eclipse 3.0 M5, so I reverted back to M4.
OS X Users: Jalopy and Colorer don't seem to work at all for me (M4). You'll need to change Easy Explorer from "explorer.exe {0}" to "open {0}" in Window > Preferences > Easy Explorer.
These are all the latest versions as of November 26, 2003.
The Display Tag has a nice feature in
it's documentation: the ability to view the source of a JSP [example].
This is done using a servlet, and works fairly well. However, as I write
documentation for Struts Menu, I'm
finding I need to view more than just the source of JSPs, but also the source
of stylesheets, scripts and Velocity templates. So far, I've found that the view source
protocol works fairly well for this.
Nice Tabs Menu Examples: generated HTML, its
JavaScript file, its
CSS file
Normally, I would be perfectly happy with this - except the view-source
protocol doesn't seem to work in Safari (last time I checked). Secondly, I got
to thinking - it sure would be nice to have a Servlet (or some other
technology) that would read in a file and spit out it's contents with syntax
highlighting. This is to say that you'd see in your browser what you see in
your editor (i.e. BBEdit, HomeSite, Eclipse, etc.).
The ideal tool would allow me to pass in a URL to a file, and it would spit out
an HTML version of that file, complete with syntax highlighting. It'd be
similar to Java2HTML, but it would allow
HTML, JavaScript, Java, CSS and JSP. I noticed that it might be possible to generate
HTML from Java using Java2HTML on the fly, but that only covers one file
type. Another option is to instruct documentation readers to change their view-source editor to be their favorite editor.
Has anyone seen such a tool? It sure would be sweet for writing better
and more readable documentation for web developers.
Jason Carreira has been nice enough to post a technical comparison of Struts vs. WebWork. Don Brown (creator of many Struts add-on packages) and Jason have been going at it ever since. It's funny, there's a small part of me that doesn't believe there's a future for Struts (because of JSF). I believe that JSF and WebWork are quite similar, and if I'm going to take the time to learn a new framework, I should learn JSF. Why? Because, I'm willing to bet the literature for Struts -> JSF is out there, and there's probably no literature for Struts -> WebWork. Also, I believe there will be JSF jobs in the near future, but not many opportunities for WebWork. In a perfect world, I'd do something like Kris is doing and learn them all - extend AppFuse to support my favorite framework (if I find one better than Struts) after the learning process, and use that for new projects.
Where does Kris find the time to learn all these frameworks? I barely have enough time to workout and complete my 8-hours-per-day of productivity-for-pay. Then again, I've been getting up around 7:30-8:00 a lot lately vs. the usual 4 a.m.
In my current gig, I'm teaching a fellow programmer how to write webapps in Java. He's never written Java, HTML, CSS or JavaScript. He wants a tool to do it all - so he can drag-n-drop, point-n-click and voila - he's created a webapp. This is a fundamental problem with J2EE - it's not possible? Or maybe it's the beauty - you have to get down and dirty with the code to create a webapp. Another issue is that we're using Struts Resume as our baseline and architecture - and there's really nothing in this app that's drag-n-drop or tools-friendly. Everything is Ant, JUnit, Struts and Hibernate. You have to be somewhat familiar with all of these to build/deploy this app. Personally, I like getting down-n-dirty with the code, but that's because I'm familiar with it and have been working with it for years. Teaching someone else how to get down-n-dirty (and to like it) is proving to be a whole other battle.
I know these have already been announced on javablogs.com, but no insight was given - so here's some lovin'. 4.1.29 seems to be merely an upgrade to DBCP 1.1 - which is great AFAIK because the "kill abandoned connections" hasn't been working for me. Hopefully DBCP 1.1 fixes this. Unfortunately, I'm running 5.0.12 on this site (where I'm still having connection issues) and the 5.0.14 release seems to only have DBCP 1.0. Oh well, maybe they'll upgrade to 1.1 in the next release. I'll still upgrade this site to 5.0.14 - maybe sometime this weekend.
Later: I upgraded this site to 5.0.14 and it does appear to have DBCP 1.1. Also, the abandoned connection timeout might actually work - or at least it's doing some logging - as indicated by the following message:
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@1077fc9) LogAbandoned: true RemoveAbandoned: true RemoveAbandonedTimeout: 60
Web Standards Guru Zeldman has re-designed and relaunched the best web standards webzine available today (IMO, of course):
Ladies and gentlemen, A List Apart 3.0. The magazine has been redesigned from front to back. It features three XML feeds and three new articles by three of our favorite writers: Joe Clark on Facts and Opinion About Fahrner Image Replacement; Douglas Bowman on Sliding Doors of CSS; Dan Benjamin on Random Image Rotation. Much more. [Jeffrey Zeldman Presents: The Daily Report]
Good stuff - there's a nice tabs article and XML Feeds for your favorite aggregator.
As you might already know, I am a committer on the Struts Menu project at SourceForge. Struts Menu is basically just a JSP Tag Library that allows you to configure a navigation system for your webapp from an XML file. Here is a demo. Here are similar menu tag libraries I found:
I also remember seeing one on weblogs.java.net, but their search feature sucks and I can't seem to find it (could be operator error).
Please let me know of any others you know of - or menus you'd like to see incorporated into Struts Menu. The current CVS version (module == navigator) allows for specifying the Menu attributes in XML and the HTML for the menu using Velocity templates (as well as some built-in displayers). Personally, I'm thinking of adding a couple from WebFX: XTree and XMenu. With the new Velocity support, it should be simple to add these. If it's possible with HTML, JavaScript and CSS - it's possible with Struts Menu!
Here are a couple of links I found on mailing lists that might be of use:
Later: I discovered the beauty of John's HowTo this evening. It allows you to specify one measly line in Apache's httpd.conf file and only a few lines in Tomcat's server.xml file and viola Tomcat configures itself! It sets up aliases and such for each webapp that you have deployed. As an example, here's dynamically created section for AppFuse:
#################### localhost:/appfuse ####################
# Static files
Alias /appfuse "/opt/dev/tools/jakarta-tomcat-4.1.27/webapps/appfuse"
<Directory "/opt/dev/tools/jakarta-tomcat-4.1.27/webapps/appfuse">
Options Indexes FollowSymLinks
DirectoryIndex index.jsp
</Directory>
# Deny direct access to WEB-INF and META-INF
#
<Location "/appfuse/WEB-INF/*">
AllowOverride None
deny from all
</Location>
<Location "/appfuse/META-INF/*">
AllowOverride None
deny from all
</Location>
JkMount /appfuse/j_security_check ajp13
JkMount /appfuse/auth/* ajp13
JkMount /appfuse/register/* ajp13
JkMount /appfuse/passwordHint/* ajp13
JkMount /appfuse/*.do ajp13
JkMount /appfuse/*.jsp ajp13
I had all of this working great - I even had Apache upgraded to 2.0.47 on OS X (serving localhost/~user files and everything)! And then I rebooted... Now in catalina.out, I'm getting the following - ugh...
BAD packet 256 In: : [B@c283b5 4/843 01 00 03 47 00 00 00 00 00 00 00 00 00 00 00 00 | ...G............ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
WTF?!
Solved: I got this solved fairly easily. I had modified /usr/sbin/apachectl so that the HTTPD variable pointed to /usr/local/apache2/bin/httpd rather than /usr/sbin/httpd. I fixed it by removing /usr/bin/apachectl and executing "ln -s /usr/local/apache2/bin/apachectl /usr/sbin/apachectl". Now if I could only get the Rendezvous mod working on 2.0.x.
I attended tonight's DJUG Meeting. The meeting was informative and well attended, but it was way too long. I just got home and it's a bit after 11:00. To put it in perspective, I arrived at 6:00. That's 4 1/2 hours of Java love. Elections contributed to the delay, as well as David Geary's 2 1/2 hour JSF presentation.
The basic concepts meeting covered Apache Axis, presented by Scott Davis. He showed us how easy it was to use Axis to create a web service and how to call it from the command line. The biggest highlight of his presentation (for me) was Keynote - his presentation software. It had wicked transitions and the slides looked awesome (good purchase Scott). Other cool software noted during Scott's preso was CodeTek's Virtual Desktop.
Next up was David Geary for a presentation on JSF. This guy has quite a resume: worked for Sun from 1994-97, member of the JSF and JSTL Expert Groups, author of 6 books, designed and implemented the Struts Template library (2nd committer to Struts after Craig). Books coming soon from David: Core JavaServer Faces, Core Rave, and Extreme Struts. Extreme Struts sounds very much like the Struts chapter I wrote for Pro JSP - XDoclet, StrutsTestCase, JUnit, Tiles and Validator. If you're looking for documentation on AppFuse or Struts-Resume, you'll find it in this book. If you don't remember, I wrote these apps for my chapters.
Most folks reading this blog probably know what JSF is. If you don't, it's a Java-based framework for building web applications. It is designed to replace Struts, but that probably won't happen until well after it's 1.0 release (March, Beta in December). JSF was also written to compete with .NET's WebForms, kinda like how JSP was developed to compete with ASP.
Sun's Project Rave is what supposedly will make JSF easy. Can Rave really be that much better than Eclipse or IDEA? Good luck Sun, those are two killer IDEs that are going to be very difficult to beat. And besides, has Sun ever produced any good applications? iPlanet sucks, so does Forte - comparing both to the other options out there.
I could go on and on about what I learned at this presentation, so let me just give you a brief synopsis. JSF generates JavaScript for you for event handling. The JSP tags are long and ugly, but they're named this way (i.e. <h:selectone_menu>) to distinguish a component (selectone) from a renderer (menu). David said he complained about this immensely when he joined the Expert Group, but now sees the point. No XML attributes are used in faces-config.xml - it's all entities. Reminds me of web.xml, lots of typing for not much information (what a pain - today's tool suck at deployment descriptors). JSF has no client-side validation - looks like Commons Validator will be around for quite some time. Especially since JSF requires you to specify your validation after each component in the JSP (vs. declaratively using the Validator). JSF EA4 does not work with Tiles - they're working vigorously to fix this. You can specify your navigation-rules separate from you actions in faces-config.xml (very cool feature).
If you know JSPs and Servlets, it's much easier to learn Struts (and presumably other webapp frameworks). If you know Swing, it'll be much easier to learn JSF. To me, this seems wrong. Some of the examples given tonight had HTML in .java files (for custom renderers). Are we reverting back to Servlets? Is Sun making a mistake with JSF? How is it better than WebWork or Struts? It seems to me to be an over-designed product developed by a bunch of Swing addicts.
My first impression of JSF is that it's going to be harder to teach to newbies (vs. Struts). Everyone says it's a standard so the tools vendors will come through and make it easy. The tools vendors haven't done shit for JSP and JSTL IMO, so how is JSF different? It's a good idea, it just needs to be simplified - a lot. KISS.
This is nuts - I'm getting at least one call or e-mail per day from recruiters and/or friends in Denver. Rather than posting these positions here (with Rates), if you're a Senior J2EE Developer in Denver, let me know. I'm going to start a list of folks with skills like mine so I can hook some brutha's up! I have 2 right now - both for J2EE/Web stuff.
Here are my requirements to get on my list:
I reserve the right to delete any of your e-mails and resumes, and to hook my friends up over other folks. I don't want to get a flood of e-mails, I'm just trying to hook up good folks with good jobs. If I can get the rates, I'll let you know what they are.