 |
July 2006 Archives
The Dublin Java Meetup Group
Posted by felipegaucho on July 25, 2006 at 02:45 PM | Permalink
| Comments (1)
Evening at
Lorraine
, a glass of wine and some French cheese, my body relaxes after
a nice bike trip across the
Meurthe River, my notebook connecting to
Ireland -
tonight is my first virtual meeting with the Java Community of Dublin.
The Dublin Java Meetup Group
The The Dublin Java Meetup Group (DJMG)
is an initiative to connect Irish people
interested in Java technologies. It is a monthly event organized by Jakub Korab.
The description of the meeting goals can be found at
the DJMG website:
The DJMG is the place to connect with fellow Java professionals. We
give you the opportunity to meet with other developers to cut through
vendor hype, compare battle scars, and toss around ideas. New members
of all experience levels welcome.
The community discussing What technologies should I be learning...
|
The starter topic of the last night was What technologies should I be learning
in the next 12 months?. The meeting had about fifteen people and the discussion
was focused on the innovative technologies such as EJB3 and JPA. The complexity of the
new J2EE5 platform and also the tools required to produce good J2EE
applications were also discussed with enthusiasm. Other topics presented were about
the profusion of the web frameworks and what will really survive for the time. Many
other topics were suggested, but I will stop here to shorten this blog entry (the full conversation is available here).
The audience was plenty of professionals and also students, the level of the discussion
was quite impressive.
|
|
As a foreign person I can't figure out how the Ireland Java community works
and even less from just one experience, but the feeling after two hours of talking
with the Irish fellows is that Ireland can be a great Java experience. The
software market of Ireland seems growing quickly and the extroverted nature of the
Irishes makes the conversation very easy.
That's it, it is midnight here in France and I am just posting this entry to remember
the nice country of Ireland, perhaps a good place to visit and also to talk about Java.
You are all invited to join the next virtual meeting - and also to drink some
pints of Guiness :).
Basic Concepts about Object Orientation (a quiz)
Posted by felipegaucho on July 17, 2006 at 12:44 AM | Permalink
| Comments (3)
One of the most tricky parts to learn Object Orientation is the concept of classification.
The task of separating entities of the real word in groups and then enumerating the
characteristics of each group seems quite simple for experienced programmers but could be messy
for novice students. The discussion about the fundamentals of classification is very important
to establish a baseline about what are classes. A clean explanation about this subject
is a challenge for the teachers and the fluency about the OO terminology is the first duty for
absolute beginners in Java or any other object oriented programming language. This test is not
closed to Java - it was created to be independent of programming languages.
The audience: this test could be useful for teachers interested
in offer their pupils a revision material and also to interchange ideas about how to enhance the
OO teaching methodologies. The students of introductorial classes about Java and OO could
check their knowledge and discuss variations about the answers. The feedback from the students brainstorm
and also from the teachers usage of this material is the most valuable result I can expect from
this text. The questions below are the result of a continuous effort in order to facilitate
the learning of the basic concepts of classification. If you remember an amazing question -
the one that helped you to figure out the idea of classes, objects and its relationships,
post your comments on the bottom of this page.
Take the Test
This section presents a set of questions about classification. Some questions refers to controversial
subjects and could let a student to spend hours thinking about that. Don´t worry if some questions are not
obvious - it is absolute normal on the first time you think about concepts on real world objects
and their modelling in programming languages. The questions are presented in the context of the
programming languages but the classification concepts are nor obvious neither inspired in the computing. The
classification are an old concern of the human thinking and motivates researches in other areas
such as Linguistics, Philosofy and Computer Science. The reading of classification theories in those
diverse study fields is a source of inspiration and I recomend you to talk about that with your teacher and
with your friends. Take all the time you need to complete this test, but resist the urge to peek at
the answers until you finish. The test begins now.
-
Mark ( T )rue or ( F )alse in the following assertions
about the pictures:

- Picture a represents a person ( ).
- Picture b represents a person ( ).
- Picture c represents a person ( ).
- Picture d represents a person ( ).
- Picture e represents a person ( ).
-
If you group the pictures above, based on the characteristics of the represented objects, how many groups
will you create? Why?
-
Why didn´t you classify picture e as a person, if eyes are part of a person?
-
Why didn´t you classify picture d as a person, if a person could have a car?
-
Mark ( T )rue or ( F )alse in the following assertions about the pictures:

- Picture a represents a vehicle ( ).
- Picture b represents a vehicle ( ).
- Picture c represents a vehicle ( ).
- Picture d represents a vehicle ( ).
- Picture e represents a vehicle ( ).
-
If you group the pictures above, based on the characteristics of
the represented objects, how many groups will you create? Why?
-
If you agree all the pictures above represent vehicles, why can we separate
these figures in different groups?
-
What is a class?
-
What is a subclass?
-
What is a superclass?
-
If you found a vehicle industry, what kind of products it will produce? Each vehicle produced by your
industry will represent a class or an object?
-
Can I say picture (c) is an airplane and also a vehicle?
-
A vehicle can have different formats? What is polymorphism?
-
What is inheritance?
-
Can I say that the vehicle (c) flies? And can I
say that the plane (c) flies? What is casting?
Watch the picture below in order to answer the further questions:

-
If you group the words of the picture above, how many groups will you create? Why?
-
What words compose each group? What is the meaning of each group you created?
-
What is a method?
-
What is a member of a class?
-
Can you manipulate the internal pieces of the motor of a moving vehicle? Can you touch your own heart? Why not?
-
Supposing you have wife, son and a car, answer the questions below using ( Y )es
or ( N )o:
- A stranger can sing a song for you without your permission? ( ).
- Your son can watch your TV without your permission? ( ).
- A stranger can drive your car without your permission? ( ).
- Your wife can drive your car without your permission? ( ).
-
What is the difference among public, protected and private members of a class?
-
How can you avoid a stranger of driving your car without your permission?
-
What is encapsulation?
-
What are package methods?
-
Can you change the format of your car wheels? What are constant members of a class?
-
Draw an image for each of these classes: love, beauty and geometry.
-
Did you have succes trying to draw the above classes? Why can´t you draw an image for the class love?
-
What are the differences between concrete and abstract classes?
-
What characteristic is shared by a bee, a plane and a cloud?
-
What is an interface?
-
Can you imagine a superclass for modelling bees, planes and clouds? What kind of problems could occur when
we group so different objects in a unique model? Give an alternative to avoid such problems.
-
Quick review: give a one phrase definition to the terms below:
- Classes
- Objects
- Interfaces
- Attributes
- Methods
- Class Hierarchy
- Polymorphism
- Encapsulation
Well, done - here comes the answers:
Click here to see the suggested answers.
Conclusion
The questions above compose a basic checklist I use to assess the learning rate of my students
at the end of the semester. I usually use that test on the first or second semester
of graduation courses. The test doesn´t have a score itself and it serves only to review some concepts and also to detect knowledge deficiencies. If you find the questions
are easy, congratulations, you are ready to go on to the more sophisticated subjects - such as
Design Patterns,
Software Design &
Architecture.
If you have doubts about the concepts here presented, don´t give up - just read your book again and
ask your teacher and colleagues about that. Object Orientation and classification are not trivial
subjects and you don´t have to underestimate or superestimate them - you just have to understand
them as the begining of your learning about Software Design.
See you on the next test.
Resources
HTML is dying
Posted by felipegaucho on July 03, 2006 at 06:48 AM | Permalink
| Comments (10)
The last decade of the XXth century was marked by the HTML advent, from a simple language rendered by the Web Browsers to the standard de facto of Internet contents: web-pages, mail and business applications. Several interesting innovations were applyied to the first draft of the HyperText Implementation in order to support the e-commerce demand, including multimedia tags and dynamic web layouts. No doubt the HTML is the most sucessfuly language in the software industry but, despite this amazing supremacy in the web publishing, it seems the end of HTML life-cycle is coming.
The problems of the HTML in the nowadays business scenario
While the HTML was growing in the popularity and the browsers were becoming more sophisticated, the users were experimenting other ways of interacting with the computers. Operational systems with easy usability, real time games and desktop suites with friendly layouts had pushed the users expectative to a higher level and then the Html started suffering its own restrictions. Some of these restrictions are enumerated below:
- Html is good for reading, not for using: text pages are very good for reading, more like a book than a software. Modern computer users are mouse centrics and usually expect to interact with the computer contents - like drag and drop, copy/paste of everything including images, sounds, etc. Html is usually showed up by browsers in a not editable way - it forces the users to use external software to edit the original contents. The exigence of using several tools to manipulate a document can be a painful task for the non-programmers users.
- The browser dependency: HTML itself is just a text document and it requires a renderer in order to be converted in a hyperlink document - a renderer could be anything able to recognize the Html specification. Despite this generic definition, time has proved the browsers are responsible for the most part of html rendering and, unfortunately, browsers vendors don't respect the W3C definition about the html language. Different browsers produce different rendering output and some of the most popular browsers include specific tags in the html definition, converting the language in a proprietary dialect. These specific tags created by browsers vendors force the developers to re-work a page in many dialects, creating tricks in order to produce portable html pages. That's odd!
- Colors and fonts: when the html was introduced (90'), people were happy with colored pages and text restricted to a small set of fonts. Today, operational systems come with hundred of fonts sets and the users are familiar with that. From the programmer perspective it is a nightmare because we must choose between a poor layout - based on the original small set of fonts - or a very tricky effort in order to embeed the fonts in the document. Usually, the embedding of the fonts in a Html page convert even a short text in a very large document.
- Transparency, animation and other special effects: html documents cannot be overlaped, don't support transparency and even including interactive animations in a web page can be complex. Users are often exposed to interactive tutorials, help cartoons and to the simulations of an intelligent behaviour in the desktop applications and operational systems. It seems impossible to reproduce such so sophisticated tricks in a simple html page.
- Html was not designed to be an application: HTML is a plain text document. The effort required to simulate a dynamic behaviour embedded in a HTML page is enourmous and sometimes a dumb and repetitive task. The other problem is that the dynamic behaviour presented by the Html pages is not even near to the usability presented by a real application. Can you imagine, for example, a person using a word processor developed in Html?
The new perspective: rich clients, desktop applications revival or GUI support on the OS?
From the browser experience, we get the Hyper Text Transfer Protocol (HTTP) and the client/server paradigm as the best results. Despite the flaws of the server centric paradigm, Http becomes a consensus as the broader used communication protocol in the world. The question now is what will be used on the client side? Several technologies are candidates for replacing the Html format and the next few years promise to be an interesting experience of marketing, technology and passion about usability on computer. It is absolutely impossible to foresee what the users will really approve, but some trends started making noise:
- Web x.0: there is a chance that the browser and the html itself still remain usefull through the usage of innovative technologies like AJAX, JSF, WebForms, etc. Sincerely, I don't believe it will happen.
- Rich clients: the idea of a Rich Client is simple - instead of distributing a lot of bytes with the complete application (feeling Applets?) the server distributes a description of the application. On the client side, an already installed application knows how to convert the description in a real application, with the full power of a desktop application. It is very similar of the Html concept, but instead of distributing a set of tags to be rendered as a document, it distributes tags (or other thing) to be converted in an application. Depending on the schema adopted to transfer the application description, a complex application can be downloaded in seconds and can use all performance of the local machine. The problem is: once again, vendors don't follow a pattern and every rich client framework comes with a complete different dialect to describe applications - goodbye interoperability. Recently, several Rich Client Plataforms are available for production: Eclipse RCP, XUL, Spring Rich Client, Flash MX-A, etc.
- Desktop Application Revival: computers are getting faster every day, and the Internet connections are presenting amazing bandwiths. A user can download, install and run a heavy application in few minutes and the quality of the hardware resources is promoting a re-thinking about the usage of Dektop Applications as the best user interface for distributed systems. You can use EJB 3.0, JPA and JAX-WS to create a business core on the server and you can use Swing/SWT to create a powerful application to enlight the user experience on the client side. Swing, for example, is a mature technology that offers much more productivity and allows a much better usability than a web application embedded in a browser. I specially recommend you to check out the Aerith project about what can be done with Swing nowadays - it is simply amazing. The tools to produce desktop applications is also a remarkable aspect about the adoption of Desktop Application as user interface - NetBeans, JDeveloper and other tools are the state of the art of IDEs. The only problem here is the culture of the programmers - after a decade of web programming, many of the best programmers on the market simply don't know how to program for desktop anymore :)
- GUI support on the OS: Microsoft Vista is coming and despite my preferences or not about the American giant company, I recognize the absolute majority of the users uses windows. The new version of the most popular operational system in the world comes with support for a script language (Gadgets) which allows programmers to produce applications based on an OS script. It is the same idea of the rich clients, but instead of an application rendering the script we get the OS doing that - supposedly more performance and better look and feel, etc. Vista is the first operational system which will render application from scripts (I guess), but the linux community is also working to get such feature available very soon (see gDesklets).
Open (old) questions: interoperability and new devices
Despite all promises, the same old questions are still alive: which technology allows me to deliver my business to every device (mobile, computers, e-paper, embedded devices, etc.)? Which technology allows me to interact with the legacy code and also provides me the opportunity to aggregate my applications to a SOA environment?
Well, my friends, I don't know the answers, this blog is simply to register the end of the Html language, at least in my own beliefs. I remember that one of my first graduation homeworks was about to create a Html page and to explain to my teacher the techniques I used to produce it - I used Notepad and a manual about the html tags, I also included some animated images and fancy buttons... It was very intersting at that time but now it seems this is the moment to accept the idea of a world without browsers. Goodbye my dear Html!
|