Monday, 27 June 2011

Changes to Java certificates. Not August 1, but September 30

Those who plan to make Java certificates, especially Java Developer and Java Architect, must know that Oracle changed requirements for them this year. From 1st August three expensive trainings will be required.

But I have read today, that deadline was postponed to September 30.

So changes apply to following certificates:
Java Architect, Java Developer, Solaris System Administrator and Solaris Security Administrator
Details on:
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=449

Sunday, 19 June 2011

Astah for UML

I have recently needed a tool to generate UML diagram. It's been ages since I was using one. I think that was during my studies. As far as I can remember I was using ArgoUML. By the way, today it is not often used in the project as it used to be. Probably because of Agile approach.

I have found that ArgoUML hasn't had any new releases for a few years.
However, I found Astah. It is quite a useful tool.
http://astah.change-vision.com/en/index.html

The community version is free.

So if you need to build UML diagrams, I can recommend it.

Friday, 17 June 2011

Problem with preferredMapping in Spring roo

I wish to present next error I have faced during using roo as a development tool.

In command controller class I used attribute --preferredMapping createSimple
So attribute consist capital letter, it cannot have as a value with capital letter.

In generated controller mappings on controller and to view names was not correct. In html it was generated lower case, but in mapping was with a capital ones. I have to fix them by had for it running.

Monday, 13 June 2011

Problem with roo + gwt

I have upgraded Spring roo to the version 1.1.4

It ended with the problem using gwt web frontend, with an error:

GWT module's gwt.xml file not found; cannot continue

I have found the cause: https://jira.springsource.org/browse/ROO-2445

So in Spring roo ver. 1.1.4 generating gwt web is not working

Friday, 10 June 2011

Referer

We do use HTTP Headers in coding web pages for the information from the browser client use.
f.e. I used Referer header to know which from which page new request comes.

I have discovered that it is not always true. On Firefox it was, but on Chrome and IE when the link was clicked in the Flash object Referer was set to the address of that flash object.

So be careful, Referer can be
- url of the page on which link was clicked,
- url for the flash object on which link was clicked.

Wednesday, 16 March 2011

Principles of object-oriented design

SOLID - five simple principles of object-oriented design
introduced by Robert C. Martin

- Single responsibility principle (S) - that an object should have only a single responsibility
- Open/closed principle (O) - “software entities … should be open for extension, but closed for modification
- Liskov substitution principle (L) - objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
- Interface separation (I) - many client specific interfaces are better than one general purpose interface.
Dependency inversion principle (D) - Depend upon Abstractions. Do not depend upon concretions.

Saturday, 10 May 2008

Java Puzzlers by Bloch & Gafter

Summary of most important things in this book:

  • To escape characters in regular expression use Pattern.quote("."). To change replacement string Matcher.quaoteReplacement(String).
  • In java are statemant labels
  • Special values:
Double.NaN
Double.POSITIVE_INFINITY
  • Be careful:
Integer.MIN_VALUE = -Integer.MIN_VALUE
Long.MIN_VALUE = - Long.MIN_VALUE
  • Java exception checking is not enforced be the virtual machine
  • Class.newInstance can throw checked exceptions that it does not declare
  • Generic type information is checked at compile time not at runtime.
  • When a program calls a static method, the method to be invoked is selected at compile-time, based on compile-time type of a qualifier
  • Static methods annnot be overridden, they can only be hidden
  • Never call overridable methods from constuctors
  • AtomicLong - object with implementation for synchonisation
  • You must override hashcode() whenever you override equals
  • Integer literals begining with 0 are in interpreted as octal values
  • Math.abs is not guaranteed to return nonnegative result. For Integer MIN_VALUE and for Long MIN_VALUE it does not
  • Methods in object are overwritten and fields are only hidden but can be other types.
  • It is possible to hide variables, nested types and static methods.
  • A package-private method cannot be directly overridden by a method in a different package
  • Thread.join calls Object.wait on the Thread instance representing the Thread being joined. This releases the lock for the duration of the wait
  • You cannot legally access a member of a nonpublic type from an other package
  • The constructor of a non-static nested class is compiled such that it has as its first parameter an additional implicid parameter representing the immediately enclosing instance. So avoid using reflection to instantiate inner classes
  • PrintStream.write(int) is the only output method that does not flush a PrintStream
  • You must drain the output stream of a child process in order to ensure its termination. The same goes for the error stream.
  • Calling Thread.interrupted always clears the interrupted status of the current thread
  • References to constant fields are resolved at compile time to the constant values they denote.