I'm developing a large chat application (signed applet clients) in Java. I have developed most of the application already using Java and RMI. After careful thought, I am thinking of using CORBA instead of RMI. The main reasons for this are:
* Performance: My application is a quite complex with many features, and with many clients using it performance is a key issue. The benchmarks that I have seen comparing the performance of CORBA (different ORBs) and RMI clearly show that CORBA is many more times faster than RMI.
* The complexity of the CORBA architecture means much more flexibly in the way that clients and servers are implemented. For example, the POA policies (to create Servant Locators for example) are something that I'm highly interested in and believe will improve my application.
However there is one concern that I have with CORBA: That is that it doesn't support HTTP tunneling (right?). I know that some ORBs like Visibroker do, but I'm mainly interested in using the J2SE 1.4 CORBA support instead of other ORBs, because my client is an applet (with Java Plugin) which I want to load quickly and not download any extra jar files of ORBs and cost is another issue. I know that RMI supports tunneling. HTTP tunneling is very important to me so that clients can connect to a server from behind a firewall (note: both clients and servers implement callbacks), I'm wondering if there is any way of achieving this with J2SE CORBA (or with small jar files of other ORBs)? I have thought of "manually" doing the tunneling for clients that behind firewalls with java code and not use CORBA for these clients, but I anticipate this to be too complex (Agree??) since the whole idea of using middleware is not to be get involved in coding TCP socket connections.
What about RMI-IIOP? Will this solve the firewall issue? Ofcourse, this means that the client should be written in RMI and server in CORBA (Is that what it means?) (It is more important to me that the server be in CORBA than the Client). What about its performance?
Any ideas?
Ahmed
* Performance: My application is a quite complex with many features, and with many clients using it performance is a key issue. The benchmarks that I have seen comparing the performance of CORBA (different ORBs) and RMI clearly show that CORBA is many more times faster than RMI.
* The complexity of the CORBA architecture means much more flexibly in the way that clients and servers are implemented. For example, the POA policies (to create Servant Locators for example) are something that I'm highly interested in and believe will improve my application.
However there is one concern that I have with CORBA: That is that it doesn't support HTTP tunneling (right?). I know that some ORBs like Visibroker do, but I'm mainly interested in using the J2SE 1.4 CORBA support instead of other ORBs, because my client is an applet (with Java Plugin) which I want to load quickly and not download any extra jar files of ORBs and cost is another issue. I know that RMI supports tunneling. HTTP tunneling is very important to me so that clients can connect to a server from behind a firewall (note: both clients and servers implement callbacks), I'm wondering if there is any way of achieving this with J2SE CORBA (or with small jar files of other ORBs)? I have thought of "manually" doing the tunneling for clients that behind firewalls with java code and not use CORBA for these clients, but I anticipate this to be too complex (Agree??) since the whole idea of using middleware is not to be get involved in coding TCP socket connections.
What about RMI-IIOP? Will this solve the firewall issue? Ofcourse, this means that the client should be written in RMI and server in CORBA (Is that what it means?) (It is more important to me that the server be in CORBA than the Client). What about its performance?
Any ideas?
Ahmed