Okay, I'll do the first one...
Enterprise Java Bean (what is the different between an EJB and a 'normal' bean)
EJBs is a standard that is supported by many application servers. If you write code that follows this standard, your code can be loaded into an application server and called by clients. Clients would generally use JNDI (supplied by the server) to find your bean and call your services.
Java beans is just a standard that allows code to be interchanged. With this standard, there are tools that can intropect your code (that follows this standard) and generate code that uses it. Standard Java Beans doesn't have all the stuff needed by servers to maintain it as a service -- as with EJBs.
Henry