This is a big subject, and will likely inspire a flame war.
But, basically, they do similar things.
COM - allows you to create software components (visual and non-visual) that interact on a machine.
DCOM - allows you to create non-visual components that can make calls across a network to another machine
EJB - allows you to create non-visual components that can make calls across a network to another machine.
The differences are in the details. COM/DCOM are essentially Microsoft-only technologies. EJB is closely tied to Java, and can run on many different platforms.
From a market-share perspective, COM/DCOM are big winners, due to the penetration of MS Windows. With Visual Basic, they're even easy to program. EJB OTOH, has a reputation of being difficult to code. But it gives the developer more control over things.
The two technologies only partially interact -- I believe that EJB can call through an interface into DCOM objects, but not the reverse.
Hope this helps. You may want to take a look at the TogetherSoft web site (
for info on EJBs. (They used to be known as Object International).
Chip H.