piątek, 8 lutego 2013

JBoss Tools & Git - must needed!

Eclipse vs NetBeans (holy war)


I started programming using NetBeans IDE (6.0 as far as I remember), I thought it's the best IDE on the planet (I'm not lazy but I like comfort and utility) my favourite design pattern was "click click... and done!" 
(I hardly ever used InteliJ IDE - so I don't have full comparison between all of them)
My first touch with Eclipse Helios was in 2009 and I said - "I will be never programming in this piece of  s**t !!!"  
Don't you ever say never! In 2012  I have discover Eclipse (Juno) once again - and whoaa! I am fall in love in it! But I hate default Eclipse colors, themes and other, thankfully I installed some plugins, I changed some setting and now my Eclipse has the same colors& themes like NetBeans :) it looks more nicer than "default Eclipse"
But let's go back to the merits.
Eclipse is cool, but his power is in the plugins & features. I fully recommend you to download and install 2 very useful plugins (I will use those plugins in Hibernate tutorials):
  • JBoss Tools
  • GIT 
The best way to install them just open your IDE Eclipse click from toolbar HELP-->Eclipse Marketplace...  enter the caption "GIT" in window which appear, and search.
This should look as follows:


(I have already installed GIT - this is the reason why I have a caption uninstall)

Go ahead and click "Install" after that restart your Eclipse IDE and viola! (new features are available if you choose "Window --> show view --> GIT" (I will mention later in Hibernate tutorial about GIT usability)

It could be good for you to install GIT BASH / GUI for your PC - it is useful for see differences in your repository. You can download GIT from here.
If you are not familiar with GIT - you can very fast to learn more. Just try GIT Tutorial Online

Please do the same with JBoss Tools (Eclipse Marketplace), but please be aware - don't install all stuff from there most of them probably you will never be used. I installed JBoss plugins for Hibernate, Maven, JSF.
That's all you need for now, let's begin Hibernate Tutorial!
















poniedziałek, 4 lutego 2013

Iteresting facts and traps in Java


I am learning now for some test, and I like to share with my obeservations
Let's start with some example class.

How do you think, what will be the ouput?
Equals values -test 1
The same object! - test 2
Equals values - test 2

Log4j take a look closer


Hello, in this post I will show you how to logging into log files or html files.Before we look closer to the Log4j, we add some sources to our JAR's.
In my previous post we added a log4j jar and slf4j jars, but when we are trying to get more details about for example LoggerFactory class we get a sad screen - atatch sources.
To resolve this I always add the sources and javadocs to all newly downloaded files.

But there is a better solution. Let's create our own user libraries with sources and javadocs.
To do this go to Window --> Preferences. Into search window located in left up corner write down there "user". 
Try to find caption "User Libraries" and click on it! You should see something like on screen bellow .




Now let's create new user Library. Click on "New"  give a name for the new library:
SLF4J and click OK, now your User Libraries should have new entry - SLF4J.
Click on it and then click "Add external JARs". 
Do you remember where did you download and extract your SLF4J zip file? Go there and add following JAR to your User Library:
  • slf4j-api-1.7.2.jar
  • slf4j-log4j12-1.7.2.jar
And click "Open". Don't close your own libraries. Now expand the menu and double click on Source attachment


Then choose external location  and external file, try to find file (in folder where you extract the zip with SLF4J framework)  "slf4j-log4j12-1.7.2-sources.jar" and click OK.
Do it the same with "
slf4j-api-1.7.2.jar" 
Create a new user library for Log4j jars and add sources to log4j.jar file.

Now right click on your project, select "Build path" --> add libraries select "user Library" and select your newly created libraries with sources and click OK.

Now try to click with CTRL on "LoggerFactory" in our Test class, you will see all API, now I don't need to ask uncle google for this. It's really cool, especially if you use Spring 3 framework all necessary things will be in your source files!
Think about it! You spent only 5 minutes for attaching a source, or 20 minutes for searching this in Google! (But what will happens if you don't have access to the Internet, and boss tells you go on keep programming?)


OK let's go back to our main goals - logging.
There are few levels of logging. The most restrictive is ALL. The lowest is OFF (logging nothing, logging is switched off).



In our Test class we logged an error level using in log4j.properties file log4j.rootLogger=ERROR, stdout  and in our program by using 

logger.error("message",error);

Let's modify this to level all



Also let's add some few lines of code in our Test class.

Run the code and see what is happening. 

Logging to files


Logging some bugs just directly to your console is nothing more just system out - that is a stone age!

Logging to a simple text file.
Let's modify our "log4j.properties"  file 



Now if we run this, there should be no input on the console, but If you click on the project and press F5 (refresh), you should see a new file ... Error.log
Check what this file contains. You can modify log4j.properties file and add a specified file location to store - for example

"log4j.appender.file.File=c:\\Error.log"

You can choose also a extension of the file (simple extensions: like *.log, *.txt, *.doc[not recommended], etc) .

Logging to a rolling file appender


I think this is the most cool in log4j logging framework, nobody likes to pure text or black-white report. Role file appender gives us the solution.
Let's modify our  log4j.properties  file:


Now let's run our program, there is nothing in console. Refresh the project inside newly created folder log/Error.html
Open this file using web browser (it could be external web browser in Eclipse). Now log file looks really nice :)








Log4j and user libraries

Mess mess is everywhere... but not in yours user libraries!



In this post I would like to show you some aspects of logging in Java applications.

Many times during programming you are obliged to add some JAR's to your build path.
Everything is fine until you need to know API of the method/function from this JAR's.


Let's create some example project in Eclipse


I gave the name for this project : TestLog4j , and I created a Test class with the main method in package:
com.selfimproveit.

I don't know what is your attitude to the clarity of your folders/documents etc, but I like to have everything under control. In my Eclipse Juno IDE   I created inside home eclipse path a  folder named "JARS" and I download there in to the separate folders all jars, libs. (You will see this on the end of this topic).

Now we must download some jars. There are few logging framework, the most popular is Log4j.
You can download it from this link.
There is possibility to download Log4j, directly from http://logging.apache.org/  but you will download just log4.jar and examples without sources and javadoc. (I will tell you later why sources and javadocs are so important to me).
 You should download 3 following files (the version could be different, when I was wrote this post 1.2.17 version was the current version)

 This is simple, from now we could start using Log4j but we need to be more flexible. 


What I mean is, what will happen if we change the logging framework? Our code will be rewritten once again - this is sad situation, isn't?
We should have some "bridge" between our application and logging framework. Our "medicine" is SLF4J



Now we should download SLF4J.  Now let's add some JAR's to our build path and finally start coding!
First of all add this JAR's to your build path:
  • log4j-1.2.17.jar
  • slf4j-api-1.7.2.jar
  • slf4j-log4j12-1.7.2.jar
After that, we must create a log4j.properties file. Go to NEW--> OTHER--> Properties File (If you don't have this feature in your Eclipse, you may download JBoss Tools plugins for your Eclipse).
Give a name to your file : log4j. Add the following code into log4j.properties file


Now our program example looks as follows:


STDOUT - it means show this on console
ERROR - error level is only displayed/logged
If we run this program, the error should be displayed to our console.
 Now If you click with CTRL button on the caption "LoggerFactory" you should see an API of this class, but  whoa!? What's going on? Probably you will see something like this:


I hate this view, in next post I will show you how to fix this up, also I will show you more options with logging.



sobota, 2 lutego 2013

Introduction



Welcome!


Probably you are here to find some information about Java and web technologies, and I think you can find here some usefull infomations. I hope you find here what you are looking for, and enjoy it. Please give me some feedback how I can improve my contet to create for example better code. This blog will be contains some aspects of my hobbies like: traveling, psychology, motorism and other.

Let's get started!