What protocol is used for communication between the ULC client (UI Engine) and the ULC application (on the server)?
ULC is (almost) independent of any protocol. During development you don’t need to worry what protocol is going to be used in the production environment. The protocol is mainly determined by the container in which a ULC application is deployed. With a ULC application running inside a servlet container, the protocol is HTTP(S). With an EJB container it might be RMI, IIOP or T3, for example. If you need to get through a firewall, deploy your ULC application in a servlet container, otherwise an EJB container may be an alternative.