RE: Java Resources?

  • From: "Macarty, Jay {PBSG}" <Jay.Macarty@xxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Fri, 28 Dec 2007 09:42:55 -0600

Jared,
Speaking from my own experiences with java and swing, I'll make the
following observations. I work in a group that supports and enhances a
very large java framework application with several sub applications. The
user interface is a swing driven one with 50+ menu selections and 38
server processes in the background to support the various client
options. I started out as a programmer on this team and am now the
technical lead; so, in response to your question about being able to
productively function within this environment, I'd say that it is
certainly possible. However, you make a accurate assumption in stating
that it is very helpful to collaborate on analyzing and updating the
swing code logic itself to ensure that one has achieved the desired
results. 

Currently, the most well known and accepted mechanism for dealing with
swing is through the java access bridge technology. While many advances
have been made over the past couple of years with both the access bridge
software and the support for it in jaws, my own experience has been that
very complex swing applications are still difficult to navigate
comfortably. If a swing based application is well designed and
constructed and if, even better, the developers coded the application to
make it easier for screen reading technologies to access the screens
(full support for keyboard navigation, logical tabbing orders, good use
of tool tips and setting accessible options, etc.), then that
application can be fairly usable. Unfortunately, it is very easy to
develop swing based applications which do not take these concepts into
consideration and there are many such products currently out there. 

Here's one thing I would suggest you might consider discussing with your
java instructor depending on how comfortable you are. When the course
work turns to swing (which it will very likely do so), IBM has develops
some excellent guidelines on how to code applications which maximize
accessibility. If the instructor is agreeable, it would probably benefit
both you and the members of the class to spend some class time talking
about the topic of accessibility and how to code for it in swing
applications. Sadly enough, most java books spend little or no time
discussing this topic; so, it is entirely possible that your book for
the course doesn't address this specifically. However, it is certainly a
benefit to all parties concerned to spend a little time and maybe even
code an assignment using the IBM guidelines. 

To summarize then, is it possible for a blind person to make a living
working within a large, heavily java oriented programming environment?
The answer is certainly yes; however, I don't think you are creating
phantom obstacles at all in realizing that java can present challenges
you might or might not encounter with Windows based application
platforms. SWT certainly offers a more accessible java interface but it
is still an add-on and isn't as widely used in what is termed "fat
clients" as swing for java applications. It is possible to write "good"
java code that at least works to maximize accessibility but
unfortunately, it is all too easy to create code that is not
accessibility friendly as well. 

The java access bridge is one technology approach to addressing the
topic of swing access. However, its support by the screen reader
community is limited and the benefits of the bridge break down quickly
when an application is poorly designed. Designing an accessibility
solution for swing that is purely java based is another approach and
allows the software much more flexibility in attempting to analyze and
"fix" access to applications which are less than optimally designed.
Such solutions are also independent of the Windows screen readers being
used on the same workstation. This is the hope and objective of
developing the java screen reader. 

Thanks for your questions and comments.


-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jared Wright
Sent: Friday, December 28, 2007 4:24 AM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: Java Resources?

Hi Jay and others, Just running through possible scenarios mentally, I 
came across the following curiosity. In your experiences, does the 
inaccessibility of swing disallow you to contribute to programs that 
utilize it? Of course, I'd never create anything from scratch using 
swing as it stands now, considering its current disadvantages. And 
certainly there would need to be some cooperation with others who have 
familiarity with the project to ensure the program achieves the desired 
results at runtime. But if for this upcoming OOP course or sometime 
entirely in the future I was given something already coded that utilizes

swing, what would I need to do to generally prepare myself to analyze 
and perhaps modify that program? Am I overthinking myself into coming up

with phantom obstacles? I'm just starting with Java, so this is a more 
long term issue, but it'll be something to integrate into my learning 
roadmap. Thanks in advance for any clarification.

Jared

Macarty, Jay {PBSG} wrote:
> Jared,
> In its simplest form, the difference between swing and SWT, from an
> accessibility perspective, is that SWT uses the underlying components
of
> the operating system to render the objects on the screen like buttons
or
> check boxes. Swing, on the other hand, works to achieve platform
> independence by painting its own graphics representations of
components
> rather than lying on the operating system. While this offers some
> constancy in behavior and look-and-feel for swing, it poses problems
for
> screens reading software. Swing is the more common GUI tool for java,
at
> this time, because the API package is included automatically with the
> java development and runtime cores where as SWT is an add-on API. 
>
> The most common approach to resolving the issue of a screen reader not
> being able to tell what is going on inside a java program is a
> technology add-on for java called the Java Access Bridge or JAB. This
> technology attempts to expose the java objects to the outside world
> where a screen reader can access it; however, the screen reader must
be
> coded with logic to utilize the access bridge API. At this time,
neither
> Windows-Eyes nor System Access have releases which include the Java
> Access Bridge support. 
>
> While java can be an accessibility obstacle, the ironic thing is that
it
> actually contains one of the best accessibility frameworks around. Its
> just a matter of being able to best take advantage of the framework
that
> is there. This is where the java screen reader I and Sina have been
> working on comes into play. Our thoughts were that the best way to
take
> advantage of the full power of the java accessibility framework is
from
> within java itself not through a bridge technology. This is the
approach
> we have individually taken and hope to merge. 
>
> More on the status of the java screen reader and the SSIP server
later.
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jared
Wright
> Sent: Thursday, December 27, 2007 2:20 PM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Java Resources?
>
> Hi there Jay, Very good advice, which I have catalogued away and will 
> certainly try to keep in the forefront of my mind as I dive in. As
much 
> as learning Java, I'm using Java as a medium to try and learn OOP 
> properly, and what you've told me helps me to validate this particular

> approach.
>
>    I am familiar with the trouble Window Eyes has with Java GUIs, 
> although the particulars of it which you've explained do fill in some
of
>
> the gaps. Can you point me to where I can learn more about the 
> differences between swing and SWT? I gather that SWT does not have the

> accessibility problems that  swing does, or at least not as
prominently.
>
> I'm sure there's a reason why swing is the GUI used by most Java 
> applications I've run across. Is there any specific factor that makes 
> swing preferable in these cases? I admit I am coming to this very
green 
> on Java, so I don't know a ton about its various nuts and bolts or
what 
> they're used for. I'm sure this will come in time. I do not know yet 
> what will or will not be used in the class, but for now I'm mostly 
> getting a head start simply for my own edification. And I'll anxiously

> await more news on your Java screen reader as well as the SSIP voice 
> server. I've seen some traffic about this on the list, but I'll admit 
> that I didn't quite understand its ramifications just by skimming the 
> relevant posts. I'll start paying closer atention to its progress now 
> for certain. Thanks a lot for the helpful feedback, and I'll be sure
to 
> ask more questions as I think of them.
>
> Jared
>
> Macarty, Jay {PBSG} wrote:
>   
>> Jared,
>> The primary advice I can offer, as you enter the world of object
>> oriented programming, is something my college adviser in computer
>> science told me a long time ago. Spend the time up front to learn the
>> fundamentals and the rest will come much easier. When I first learned
>> java, I came from a background of 12+ years working with languages
>>     
> such
>   
>> as COBOL, C, and REXX. It took a little while to get down the idea of
>> thinking of programs in terms of objects. Take the time to learn the
>> fundamentals of OO, such as inheritance, polymorphism, and
>>     
> encapsulation
>   
>> and what they "really" mean in terms of constructing a program or
>> project. Once you get down the principles, the specific language,
such
>> as java, ruby, C#, etc., becomes a matter of learning the syntax of
>>     
> how
>   
>> to apply those principles in a given language. I've seen way too many
>>     
> so
>   
>> called "experienced" java programmers with code that still looks like
>>     
> it
>   
>> was just  converted COBOL code. 
>>
>> Another reason to concentrate on the principles of OO and understand
>> them well is the emerging emphasis on a system architecture approach
>> known as service oriented architecture or SOA. SOA takes many of the
>>     
> OO
>   
>> programming ideas you will learn, such as encapsulation and loose
>> coupling, and applies those principles to services (that is
autonomous
>> peaces of business functionality and composites of those basic
>>     
> services)
>   
>> instead of just programs. Like object oriented programming, SOA, is a
>> way of thinking and not just a bunch of applications put together as
>>     
> web
>   
>> services. Your grasp of OO programming will serve you well if you get
>>     
> it
>   
>> down now in both the areas of programming languages and system
>> architectures. 
>>
>> As for your being a Window-Eyes user, I have been told by the good
>>     
> folks
>   
>> over at GW Micro that java support is coming in a future release;
>> however, as it stands today, you may have some obstacles when it
comes
>> to working with java's primary GUI interface called swing. As long as
>> your class is spending time on using java as the back-end of web
>> applications (such as JSP, java server faces, and servlets) or if you
>> get into using the GUI interface called SWT, you'll likely be okay.
>>     
> But
>   
>> when you start using swing, Window-Eyes 6.1 will not read the
screens.
>>     
> I
>   
>> don't have a timeframe on when java support will be available in
>> Window-Eyes (I've asked to be a beta tester). I've recently revived
my
>> own java based screen reader which I hadn't worked on for a couple of
>> years seriously. I've still got some work to do and am looking
forward
>> to comparing notes with Sina on some similar work; however, my screen
>> reader works exactly the same under JAWS, Window-Eyes, and System
>> Access. I hope to release a beta version of the screen reader, along
>> with version 1.0 of the SSIP voice server, within the next couple of
>> weeks.
>>
>> Good luck on your studies and we look forward to hearing of your
>> progress. 
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jared
>>     
> Wright
>   
>> Sent: Thursday, December 27, 2007 12:26 AM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: Java Resources?
>>
>> Hi Everyone, Next semester I start a course on object oriented 
>> programming with Java as its instructional language. Probably high
>>     
> time 
>   
>> I get familiar with it anyhow. I've grabbed all of Jamal's Java 
>> documentation from Inthin's page and wanted to check for any tips or 
>> resources you all might have on working with Java, either generally
or
>>     
>
>   
>> as relates the accessibility puzzle. Given the wealth of information
>>     
> in 
>   
>> Jamal's archive, I'll also welcome any feedback on what you consider
>>     
> the
>   
>> most effective learning resources, either in his archive or
otherwise.
>>     
>
>   
>> For context's sake, I am a Window Eyes user and am not yet all that 
>> efficient in Linux, but it is another one of my current persistent 
>> projects, so if there are any resources that are head and shoulders 
>> above anything else and not on Windows, I'm open to giving it a shot.

>> Definitley more at home on Windows still though. Thanks in advance
for
>>     
>
>   
>> any responses, which I do look forward to reading.
>>
>> Best,
>> Jared
>> __________
>> View the list's information and change your settings at 
>> //www.freelists.org/list/programmingblind
>> __________
>> View the list's information and change your settings at 
>> //www.freelists.org/list/programmingblind
>>
>>
>>   
>>     
>
> __________
> View the list's information and change your settings at 
> //www.freelists.org/list/programmingblind
> __________
> View the list's information and change your settings at 
> //www.freelists.org/list/programmingblind
>
>
>   

__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind
__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: