Summers Pittman ℝ | 1 Dec 2011 01:52
Picon
Gravatar

Fwd: Want to learn more about HTML5 and Dart?

This just came through the GTUG mailing list if anyone is interested.

---------- Forwarded message ----------
From: Charlie Collins <charlie.collins-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Date: Wed, Nov 30, 2011 at 5:38 PM
Subject: Want to learn more about HTML5 and Dart?


Just saw this on G+, thought I would pass it along here:

David Chandler (Googler) is speaking to GA Tech ACM tomorrow on HTML5
and the Dart language.
Location: Klaus 2447 Dec 1 6-8pm

_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Summers Pittman ℝ | 16 Dec 2011 17:06
Picon
Gravatar

Who does client application work?

I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.

What technologies do you use? What problem are you trying to solve?  How is it working out?

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.


_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
acidbriggs | 16 Dec 2011 19:43
Picon
Gravatar

Re: Who does client application work?

We've developed a rather large, thin-client Swing application for Hospitals.  

The client uses technologies such as Spring (dependency injection, xml marshaling, authentication
etc), Groovy, SwingLabs components, log4j, ActiveMQ etc. It worked out quite well; amazingly well
actually.  

One of the biggest issues is deployment.  We used Web Start, but the real issue is JVM deployment.  We have
about 1000 machines at a single hospital which then requires all of them to have an 'approved' JVM version. 
We got hit really hard about a year and a half ago when Sun updated their SwingWorker implementation in a
minor update which hosed our entire application.  I had to go back and use a version from SwingLabs and
redeploy this to all our clients.  Horrible bug in the Sun version which caused a deadlock. I refuse to code
anything that requires a client to run on a specific minor version.  Though, we do require anything post JDK
1.6u10 since there were significant additions that we relied on (Nimbus Look & Feel being one of them).

Another issue can be finding people who truly understand Swing. I didn't know it when I started. About a year
after I wished I had known more before I started because I did have some design issues which would have been
mitigated early if I had understood.  Having a good architectural design for your app is key.  It's not as
cut-and-dry as a SpringMVC type application.  I had been unable to find any really good application
frameworks to get us started. There are some, but...  So, be prepared to design your application model
appropriately. Don't keep your business logic embedded in your UI code. If you are creating a fat client,
build yourself an application that doesn't require a UI. If you can build an command line type interface in
your application I highly recommend it. I built a debug console in ours and it has been extremely helpful in
inspecting the application's state.  

One major pain, that I would not do again, is incorporate Groovy into it.  Groovy is just to much overhead for a
responsive interface. You don't notice this on a server-side application, but you will know it when your
app is just not responding as fast as you would like. Plus, we had a lot of memory leak issues with the Groovy
scripting engine at the time. We incorporated Groovy because we needed to be able to customize some
interface components at deployment/run-time. We created our own small DSL for this, and it was painful.  I
think I would now like to try Clojure, but that is just 'hey, I'd like to try it'.

Another major annoyance in Swing (or java development in general) is how much code you need to write to do
simple tasks, such as responding to a button click. You will be writing a lot of anonymous inner classes
(listeners/delegates) which become very cumbersome since there is just so much boilerplate in it.  If
only I could have had those Lambdas when I wrote it!  That would have made Swing dev so much nicer.  I can't even
explain how nice that would be.

Another small annoyance is the lack of Generics in Swing. Some people say it's a bad idea, others want it. 
But, just get use to casting or creating your own generic table models. But, that only gets you so far.

But, that all aside, I like Swing. I would rather do swing than write a JavaScript application. The key is to
keep it modular, maintainable and testable. Keep that in mind.  Your interfaces should be isolated from
each other and communicate via observers. Just about every design pattern you have ever read is in Swing.
It's an awesome way to learn them.  

Oh, and always remember that all your UI updates should be done on the event-dispatching thread!  

SwingUtilities/EventQueue is your friend (when Sun/Oracle doesn't break it).

Read the docs on how cell renderers work.

There is a lot more, but it is fun.

--briggs

On Dec 16, 2011, at 11:06 AM, Summers Pittman ℝ wrote:

> I've noticed that there are many of us who build web applications running Java (in my case a gigantic
financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in
web applications.  I was wondering if anyone was working on client applications?  Not web applications but
apps which run on the desktop (or Android or maybe an Applet) Java applications.
> 
> What technologies do you use? What problem are you trying to solve?  How is it working out?
> 
> Summers Pittman
> >>Phone:912 293 2314
> >>Java is my crack.
> 
> 
> _______________________________________________
> ajug-members mailing list
> ajug-members <at> ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members

_______________________________________________
ajug-members mailing list
ajug-members <at> ajug.org
http://www.ajug.org/mailman/listinfo/ajug-members
Lance Gleason | 17 Dec 2011 02:08
Picon
Favicon
Gravatar

Does anybody want to make the transition to Ruby?

Hey everybody,

Many of you who know me know that I love Ruby.  Through that love I have a
really sweet deal working for a company called Mojo Lingo that writes Ruby
apps for a open source telephony platform called Adhearsion.  We are also
all core committers to it.  If you haven't heard of adhearsion is it
really cool.  It allows you to easily write applications for a variety of
PBX's.  If you are familiar with this space it supports Tropo,  Rayo and
Asterisk and the next release will be supporting Rayo.  Also,  unlike a
lot of Ruby applications,  we tend to do a lot of heavy threading.  It
makes for some interesting conversations when talking with people like
Charles Nutter or Arron Patterson at the conferences because we are really
pushing the boundaries of Ruby threading in the C implementation and often
end up running larger installations on the the JVM.

So these days I work on a contract basis with plenty of work,  our team is
remote so I am able to work anywhere in the world,  my development machine
is a Mac (though we do have some that prefer and use Linux as well),  and
am encouraged to travel to conferences and talk about the platform.  We
all care about the quality and type of code we write so TDD is the norm,
we actively use CI and remote pair when we need to.....and I LOVE what I
do!

We are also looking for people to join our team.  If this sounds
interesting to any of you aptitude and attitude are much more important to
us than playing buzzword bingo with your resume.  If you have experience
using any of the technologies I have mentioned great.  If you don't,  but
show us that you have the aptitude and attitude we would be happy to help
you learn them while getting paid for it.  We loving looking at people's
public repos on Github or open source contributions so if you have them
that is great.  We also do something different than a lot of companies
when people join the team.  If we see a match after looking at your
background,  talking to you etc. we will invite you to join the team on a
part time (evening and weekend) trial basis while getting paid for your
work during that period of time.  If your style of communication,  code
quality etc. looks like a match,  and you feel the same then we invite you
to join full time. 

If this sounds interesting to anybody here let me know and we can begin
the conversation.  We are also not working with recruiters at this time
and have no plans to in the foreseeable future.

Lance
Ramesh Rajamani | 17 Dec 2011 03:41
Picon
Favicon

Re: Who does client application work?

Hello Summers Pittman,
                                  Eclipse RCP - I have worked before which is good desktop application.

Thanks,
Ramesh Rajamani

From: secondsun-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Date: Fri, 16 Dec 2011 11:06:29 -0500
To: ajug-members-4vciHtwbE8s@public.gmane.org
Subject: [ajug-members] Who does client application work?

I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.

What technologies do you use? What problem are you trying to solve?  How is it working out?

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.



_______________________________________________ ajug-members mailing list ajug-members-4vciHtwbE8s@public.gmane.org http://www.ajug.org/mailman/listinfo/ajug-members
_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Kerry Wilson | 17 Dec 2011 05:19
Gravatar

Re: Who does client application work?

This isn't a true client app but I figured I would chime in since it is not a traditional web application either.  I recently started a new job working on a brand spanking new application.  I got to start from scratch (yay).  I have to use GWT (not so yay).  In anticipation of needing to develop a quality app out of the gate, before starting the job, I did a lot of reading (Pro GWT) and studying up on GWT, the APIs, and design patterns.  I also wrote a small app for fun.  This helped out tremendously as I was able to hit the ground running on day 1.


My background is mainly web apps using spring mvc, struts, jsf, or various other frameworks.  Coding in GWT is very much Swing-like.  I have not spent much time doing swing development (very little actually).  GWT is just OK for me.  There are lots of idiosyncracies involved since the java code is compiled to javascript.  I would probably only recommend it for people who have a staff of experienced swing people and would like to move them in to web development.  I would personally have chosen JSF to write the app I am working on.  Digging deeper, I used GIN for dependency injection.  It is basically guice for GWT.  Since I was using guice in the client I went ahead and used guice on the server as well.  This is my first time using guice and I like it.  Especially since I can use CDI annotations.  I am going to try and hold off sucking in the spring dependencies as long as possible.

When you use GWT you are trading javascript for type-safe, testable, java.  Personally, I am a fan of javascript so I would just as soon stick with it but I am not completely turned off from GWT.

kw

On Fri, Dec 16, 2011 at 8:41 PM, Ramesh Rajamani <rameshrajamani-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:
Hello Summers Pittman,
                                  Eclipse RCP - I have worked before which is good desktop application.

Thanks,
Ramesh Rajamani

From: secondsun-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Date: Fri, 16 Dec 2011 11:06:29 -0500
To: ajug-members-4vciHtwbE8s@public.gmane.org
Subject: [ajug-members] Who does client application work?


I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.

What technologies do you use? What problem are you trying to solve?  How is it working out?

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.



_______________________________________________ ajug-members mailing list ajug-members <at> ajug.org http://www.ajug.org/mailman/listinfo/ajug-members

_______________________________________________
ajug-members mailing list
ajug-members-4vciHtwbE8s@public.gmane.org
http://www.ajug.org/mailman/listinfo/ajug-members




--

_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Summers Pittman ℝ | 17 Dec 2011 19:50
Picon
Gravatar

Re: Who does client application work?

I've done some non enterprise applications at work this past year. Here are a few.

I made a virtual golf game that used an Android phone and computer vision to line up and make the shot.  This application was interesting.  First I wrote a game using JMonkey in Java which would display a 3D miniature golf course and AR tracking tags.  The other half was an Android application.  The phone would determine the angle it was viewing the various tags at and then send that information to the game server as a "stroke".  The game would hit the ball at the angle and at a force the user had selected.

For April Fools I wrote an application in Java which would monitor a video stream and take a picture when it noticed someone's face took up a certain portion of the frame for a while.  It would then take this picture and send it to Twitter.  I then set it out with a magic eye photo and let it take pictures of my coworkers cross-eyed and publish to the company feed.

We also made a Java Applet to facilitate printing coupons with one of our vendors last year.  

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.




On Fri, Dec 16, 2011 at 1:43 PM, <acidbriggs-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
We've developed a rather large, thin-client Swing application for Hospitals.

The client uses technologies such as Spring (dependency injection, xml marshaling, authentication etc), Groovy, SwingLabs components, log4j, ActiveMQ etc. It worked out quite well; amazingly well actually.

One of the biggest issues is deployment.  We used Web Start, but the real issue is JVM deployment.  We have about 1000 machines at a single hospital which then requires all of them to have an 'approved' JVM version.  We got hit really hard about a year and a half ago when Sun updated their SwingWorker implementation in a minor update which hosed our entire application.  I had to go back and use a version from SwingLabs and redeploy this to all our clients.  Horrible bug in the Sun version which caused a deadlock. I refuse to code anything that requires a client to run on a specific minor version.  Though, we do require anything post JDK 1.6u10 since there were significant additions that we relied on (Nimbus Look & Feel being one of them).

Another issue can be finding people who truly understand Swing. I didn't know it when I started. About a year after I wished I had known more before I started because I did have some design issues which would have been mitigated early if I had understood.  Having a good architectural design for your app is key.  It's not as cut-and-dry as a SpringMVC type application.  I had been unable to find any really good application frameworks to get us started. There are some, but...  So, be prepared to design your application model appropriately. Don't keep your business logic embedded in your UI code. If you are creating a fat client, build yourself an application that doesn't require a UI. If you can build an command line type interface in your application I highly recommend it. I built a debug console in ours and it has been extremely helpful in inspecting the application's state.

One major pain, that I would not do again, is incorporate Groovy into it.  Groovy is just to much overhead for a responsive interface. You don't notice this on a server-side application, but you will know it when your app is just not responding as fast as you would like. Plus, we had a lot of memory leak issues with the Groovy scripting engine at the time. We incorporated Groovy because we needed to be able to customize some interface components at deployment/run-time. We created our own small DSL for this, and it was painful.  I think I would now like to try Clojure, but that is just 'hey, I'd like to try it'.

Another major annoyance in Swing (or java development in general) is how much code you need to write to do simple tasks, such as responding to a button click. You will be writing a lot of anonymous inner classes (listeners/delegates) which become very cumbersome since there is just so much boilerplate in it.  If only I could have had those Lambdas when I wrote it!  That would have made Swing dev so much nicer.  I can't even explain how nice that would be.

Another small annoyance is the lack of Generics in Swing. Some people say it's a bad idea, others want it.  But, just get use to casting or creating your own generic table models. But, that only gets you so far.

But, that all aside, I like Swing. I would rather do swing than write a JavaScript application. The key is to keep it modular, maintainable and testable. Keep that in mind.  Your interfaces should be isolated from each other and communicate via observers. Just about every design pattern you have ever read is in Swing. It's an awesome way to learn them.

Oh, and always remember that all your UI updates should be done on the event-dispatching thread!

SwingUtilities/EventQueue is your friend (when Sun/Oracle doesn't break it).

Read the docs on how cell renderers work.

There is a lot more, but it is fun.

--briggs


On Dec 16, 2011, at 11:06 AM, Summers Pittman ℝ wrote:

> I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.
>
> What technologies do you use? What problem are you trying to solve?  How is it working out?
>
> Summers Pittman
> >>Phone:912 293 2314
> >>Java is my crack.
>
>
> _______________________________________________
> ajug-members mailing list
> ajug-members <at> ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members


_______________________________________________
ajug-members mailing list
ajug-members <at> ajug.org
http://www.ajug.org/mailman/listinfo/ajug-members

_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Charlie Walker | 19 Dec 2011 21:58
Picon
Gravatar

Re: Who does client application work?

Wow, you should demo that at an upcoming ajug!!

-- 
Charlie Walker
Sent with Sparrow

On Saturday, December 17, 2011 at 1:50 PM, Summers Pittman ℝ wrote:

I've done some non enterprise applications at work this past year. Here are a few.

I made a virtual golf game that used an Android phone and computer vision to line up and make the shot.  This application was interesting.  First I wrote a game using JMonkey in Java which would display a 3D miniature golf course and AR tracking tags.  The other half was an Android application.  The phone would determine the angle it was viewing the various tags at and then send that information to the game server as a "stroke".  The game would hit the ball at the angle and at a force the user had selected.

For April Fools I wrote an application in Java which would monitor a video stream and take a picture when it noticed someone's face took up a certain portion of the frame for a while.  It would then take this picture and send it to Twitter.  I then set it out with a magic eye photo and let it take pictures of my coworkers cross-eyed and publish to the company feed.

We also made a Java Applet to facilitate printing coupons with one of our vendors last year.  

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.




On Fri, Dec 16, 2011 at 1:43 PM, <acidbriggs <at> gmail.com> wrote:
We've developed a rather large, thin-client Swing application for Hospitals.

The client uses technologies such as Spring (dependency injection, xml marshaling, authentication etc), Groovy, SwingLabs components, log4j, ActiveMQ etc. It worked out quite well; amazingly well actually.

One of the biggest issues is deployment.  We used Web Start, but the real issue is JVM deployment.  We have about 1000 machines at a single hospital which then requires all of them to have an 'approved' JVM version.  We got hit really hard about a year and a half ago when Sun updated their SwingWorker implementation in a minor update which hosed our entire application.  I had to go back and use a version from SwingLabs and redeploy this to all our clients.  Horrible bug in the Sun version which caused a deadlock. I refuse to code anything that requires a client to run on a specific minor version.  Though, we do require anything post JDK 1.6u10 since there were significant additions that we relied on (Nimbus Look & Feel being one of them).

Another issue can be finding people who truly understand Swing. I didn't know it when I started. About a year after I wished I had known more before I started because I did have some design issues which would have been mitigated early if I had understood.  Having a good architectural design for your app is key.  It's not as cut-and-dry as a SpringMVC type application.  I had been unable to find any really good application frameworks to get us started. There are some, but...  So, be prepared to design your application model appropriately. Don't keep your business logic embedded in your UI code. If you are creating a fat client, build yourself an application that doesn't require a UI. If you can build an command line type interface in your application I highly recommend it. I built a debug console in ours and it has been extremely helpful in inspecting the application's state.

One major pain, that I would not do again, is incorporate Groovy into it.  Groovy is just to much overhead for a responsive interface. You don't notice this on a server-side application, but you will know it when your app is just not responding as fast as you would like. Plus, we had a lot of memory leak issues with the Groovy scripting engine at the time. We incorporated Groovy because we needed to be able to customize some interface components at deployment/run-time. We created our own small DSL for this, and it was painful.  I think I would now like to try Clojure, but that is just 'hey, I'd like to try it'.

Another major annoyance in Swing (or java development in general) is how much code you need to write to do simple tasks, such as responding to a button click. You will be writing a lot of anonymous inner classes (listeners/delegates) which become very cumbersome since there is just so much boilerplate in it.  If only I could have had those Lambdas when I wrote it!  That would have made Swing dev so much nicer.  I can't even explain how nice that would be.

Another small annoyance is the lack of Generics in Swing. Some people say it's a bad idea, others want it.  But, just get use to casting or creating your own generic table models. But, that only gets you so far.

But, that all aside, I like Swing. I would rather do swing than write a JavaScript application. The key is to keep it modular, maintainable and testable. Keep that in mind.  Your interfaces should be isolated from each other and communicate via observers. Just about every design pattern you have ever read is in Swing. It's an awesome way to learn them.

Oh, and always remember that all your UI updates should be done on the event-dispatching thread!

SwingUtilities/EventQueue is your friend (when Sun/Oracle doesn't break it).

Read the docs on how cell renderers work.

There is a lot more, but it is fun.

--briggs


On Dec 16, 2011, at 11:06 AM, Summers Pittman ℝ wrote:

> I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.
>
> What technologies do you use? What problem are you trying to solve?  How is it working out?
>
> Summers Pittman
> >>Phone:912 293 2314
> >>Java is my crack.
>
>
> _______________________________________________
> ajug-members mailing list
> ajug-members <at> ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members


_______________________________________________
ajug-members mailing list
ajug-members <at> ajug.org
http://www.ajug.org/mailman/listinfo/ajug-members

_______________________________________________
ajug-members mailing list

_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Gunnar Hillert | 19 Dec 2011 22:44
Favicon
Gravatar

AJUG December 2011 Pre-Meeting Hangout

Hi everybody!

The AJUG December meeting is here - So why not miss traffic and spend
some quality time before the meeting kicks off, networking with some
other AJUG folks?

We will meet on Tuesday, December 20 around 5:30pm at La Botana Tex-Mex
Restaurant. La Botana is located on the connector that runs parallel to I-285 on
the same side of I-285 as the AJUG meeting location (Holiday Inn Select).

This is just a loose, informal time to hang out and get to know each
other before we head over to the meeting for our monthly dose of
mind-altering Java insights. Why waste an hour working late at the
office before you head to AJUG?

Come join us for some good food, good beverages, and good fun.

Also, thanks to Anteo for free food and good company :-)

Specifics for finding La Botana:

La Botana Tex-Mex Restaurant
2071 Savoy Dr. 
Atlanta, GA 30341
(770) 986-9996

You can find the Google map at: http://bit.ly/fBgiAq

I hope you can make it!

Cheers,

Gunnar
_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members
Summers Pittman ℝ | 20 Dec 2011 01:45
Picon
Gravatar

Re: Who does client application work?

I'll see what I can do.  I've lost the android portion of the application due to a hard drive crash, but it should't be too hard to recreate.  

I'm assuming you are more interested in the mini golf app than the printing applet ;)

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.




On Mon, Dec 19, 2011 at 3:58 PM, Charlie Walker <maverick67-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
Wow, you should demo that at an upcoming ajug!!

-- 
Charlie Walker
Sent with Sparrow

On Saturday, December 17, 2011 at 1:50 PM, Summers Pittman ℝ wrote:

I've done some non enterprise applications at work this past year. Here are a few.

I made a virtual golf game that used an Android phone and computer vision to line up and make the shot.  This application was interesting.  First I wrote a game using JMonkey in Java which would display a 3D miniature golf course and AR tracking tags.  The other half was an Android application.  The phone would determine the angle it was viewing the various tags at and then send that information to the game server as a "stroke".  The game would hit the ball at the angle and at a force the user had selected.

For April Fools I wrote an application in Java which would monitor a video stream and take a picture when it noticed someone's face took up a certain portion of the frame for a while.  It would then take this picture and send it to Twitter.  I then set it out with a magic eye photo and let it take pictures of my coworkers cross-eyed and publish to the company feed.

We also made a Java Applet to facilitate printing coupons with one of our vendors last year.  

Summers Pittman
>>Phone:912 293 2314
>>Java is my crack.




On Fri, Dec 16, 2011 at 1:43 PM, <acidbriggs-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
We've developed a rather large, thin-client Swing application for Hospitals.

The client uses technologies such as Spring (dependency injection, xml marshaling, authentication etc), Groovy, SwingLabs components, log4j, ActiveMQ etc. It worked out quite well; amazingly well actually.

One of the biggest issues is deployment.  We used Web Start, but the real issue is JVM deployment.  We have about 1000 machines at a single hospital which then requires all of them to have an 'approved' JVM version.  We got hit really hard about a year and a half ago when Sun updated their SwingWorker implementation in a minor update which hosed our entire application.  I had to go back and use a version from SwingLabs and redeploy this to all our clients.  Horrible bug in the Sun version which caused a deadlock. I refuse to code anything that requires a client to run on a specific minor version.  Though, we do require anything post JDK 1.6u10 since there were significant additions that we relied on (Nimbus Look & Feel being one of them).

Another issue can be finding people who truly understand Swing. I didn't know it when I started. About a year after I wished I had known more before I started because I did have some design issues which would have been mitigated early if I had understood.  Having a good architectural design for your app is key.  It's not as cut-and-dry as a SpringMVC type application.  I had been unable to find any really good application frameworks to get us started. There are some, but...  So, be prepared to design your application model appropriately. Don't keep your business logic embedded in your UI code. If you are creating a fat client, build yourself an application that doesn't require a UI. If you can build an command line type interface in your application I highly recommend it. I built a debug console in ours and it has been extremely helpful in inspecting the application's state.

One major pain, that I would not do again, is incorporate Groovy into it.  Groovy is just to much overhead for a responsive interface. You don't notice this on a server-side application, but you will know it when your app is just not responding as fast as you would like. Plus, we had a lot of memory leak issues with the Groovy scripting engine at the time. We incorporated Groovy because we needed to be able to customize some interface components at deployment/run-time. We created our own small DSL for this, and it was painful.  I think I would now like to try Clojure, but that is just 'hey, I'd like to try it'.

Another major annoyance in Swing (or java development in general) is how much code you need to write to do simple tasks, such as responding to a button click. You will be writing a lot of anonymous inner classes (listeners/delegates) which become very cumbersome since there is just so much boilerplate in it.  If only I could have had those Lambdas when I wrote it!  That would have made Swing dev so much nicer.  I can't even explain how nice that would be.

Another small annoyance is the lack of Generics in Swing. Some people say it's a bad idea, others want it.  But, just get use to casting or creating your own generic table models. But, that only gets you so far.

But, that all aside, I like Swing. I would rather do swing than write a JavaScript application. The key is to keep it modular, maintainable and testable. Keep that in mind.  Your interfaces should be isolated from each other and communicate via observers. Just about every design pattern you have ever read is in Swing. It's an awesome way to learn them.

Oh, and always remember that all your UI updates should be done on the event-dispatching thread!

SwingUtilities/EventQueue is your friend (when Sun/Oracle doesn't break it).

Read the docs on how cell renderers work.

There is a lot more, but it is fun.

--briggs


On Dec 16, 2011, at 11:06 AM, Summers Pittman ℝ wrote:

> I've noticed that there are many of us who build web applications running Java (in my case a gigantic financial app) or work with companies who make Java libraries (in Gunnar's case Spring Source) for use in web applications.  I was wondering if anyone was working on client applications?  Not web applications but apps which run on the desktop (or Android or maybe an Applet) Java applications.
>
> What technologies do you use? What problem are you trying to solve?  How is it working out?
>
> Summers Pittman
> >>Phone:912 293 2314
> >>Java is my crack.
>
>
> _______________________________________________
> ajug-members mailing list
> ajug-members <at> ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members


_______________________________________________
ajug-members mailing list
ajug-members <at> ajug.org
http://www.ajug.org/mailman/listinfo/ajug-members

_______________________________________________
ajug-members mailing list


_______________________________________________
ajug-members mailing list
ajug-members-4vciHtwbE8s@public.gmane.org
http://www.ajug.org/mailman/listinfo/ajug-members


_______________________________________________
ajug-members mailing list
ajug-members@...
http://www.ajug.org/mailman/listinfo/ajug-members

Gmane