In 3.0 version we did a lot of changes in internal architecture to make the library compatible with the latest MS Internet Explorer versions. We avoid using Microsoft COM-Marshalling for communication between Java and JExplorer32 processes. COM-Marshalling has a lot of restrictions and it's not compatible with the latest MS Internet Explorer versions (11.0.10+). New Inter-Process Communication Bridge is implemented using Windows sockets. All native code is running in separate JExplorer32.exe process. In Java process we don't use native code at all, so if MS IE engine for some reason is crashed, your Java application will continue working. Due to this improvement you will not see any memory usage issues in your Java application anymore.
Required Libraries Since all native code is running in separate native process and we don't use native in Java process, we don't need JNIWrapper, ComfyJ and WinPack libraries anymore. Now you need to include only the following JAR files into your application class path:
java -classpath jexplorer-3.0.jar <your-application-class>
2.x libraries
jexplorer-2.7.jar
comfyj-2.10.jar
jniwrap-3.8.4.jar
winpack-3.8.4.jar
slf4j-log4j12-1.5.8.jar
slf4j-api-1.5.8.jar
log4j-1.2.15.jar
| 3.x libraries
jexplorer-3.0.jar
|
API Changes New internal architecture affected public API. We had to modify it, but we made it better and simple. The following table demonstrates changes in public API and how to replace 2.x code with new 3.x API:
JExplorer 2.x | JExplorer 3.x | // JEplorer 2.x packages
import com.jniwrapper.win32.ie.*;
import com.jniwrapper.win32.ie.dom.*;
import com.jniwrapper.win32.ie.event.*;
import com.jniwrapper.win32.ie.proxy.*;
import com.jniwrapper.win32.ie.command.*;
import com.jniwrapper.win32.ie.cookie.*;
import com.jniwrapper.win32.ie.scripting.*;
// Get IE version
String ieVersion = Browsers.getIEVersion();
// Enable GPU rendering
Browsers.turnOnGPURendering();
// Enable IE 11 Browser Mode
Browsers.turnOnCompatibilityMode("11000");
// Create Browser instance
Browser browser = new Browser();
// Create Browser instance in native process of another Browser
Browser browser = new Browser();
Browser browserTwo = new Browser(browser);
// Create Browser instance in out-process mode
Browser browser = new Browser(new BrowserOptions(true));
// Create Browser instance in in-process mode
Browser browser = new Browser(new BrowserOptions(false));
// Dispose Browser instance
browser.close();
boolean isClosed = browser.isClosed();
// Execute JavaScript
Object result = browser.executeScript("document.title");
String title = (String) result;
// Get Browser Options
BrowserOptions options = browser.getOptions();
// Get/Set parent Browser
WebBrowser parent = browser.getParentBrowser();
browser.setParentBrowser(parent);
// Execute Print Command
browser.execute(new PrintCommand());
// Get HTMLDocument
HTMLDocument document = browser.getDocument();
// Set context menu provider
browser.setContextMenuProvider(new ContextMenuProvider() {...});
// Ready State flag
ReadyState readyState = browser.getReadyState();
// Get IWebBrowser2 COM instance
IWebBrowser2 browserPeer = (IWebBrowser2) browser.getBrowserPeer();
// Get OleMessageLoop
OleMessageLoop messageLoop = browser.getOleMessageLoop();
// Wait until document is ready
browser.navigate("http://www.google.com");
browser.waitReady();
// Get context menu HTML element
Element contextElement = browser.getContextElement();
// Register navigation listener
browser.addNavigationListener(new NavigationEventListener() {...});
// Register status listener
browser.addStatusListener(new StatusEventListener() {...});
// Register popup listener
browser.addNewWindowListener(new NewWindowEventListener() {...});
// Set HTML Modal Dialog listener
browser.setHtmlDialogListener(new HtmlDialogListener() {...});
// Set Dialog handler
browser.setDialogEventHandler(new DialogEventHandler() {...});
// Set Popup handler
browser.setNewWindowHandler(new NewWindowEventHandlerExt2() {...});
// Set authentication handler
browser.setAuthenticationHandler(new AuthenticationHandler() {...});
// Set event handler
browser.setEventHandler(new WebBrowserEventsHandler() {...});
// Set JavaScript error listener
browser.setScriptErrorListener(new ScriptErrorListener() {...});
// Update Proxy settings
browser.setProxy(new ProxyConfiguration());
// Set Cookies
Set<Cookie> cookies = new HashSet<Cookie>();
cookies.add(new Cookie("name", "value"));
browser.setCookies(new URL("http://www.google.com"), cookies);
// Set HTTP security handler
browser.setHttpSecurityHandler(new HttpSecurityHandler() {...});
// Track children
browser.trackChildren();
WebBrowser child = browser.getRecentChild();
WebBrowser child = browser.waitChildCreation();
// Get Properties
WebBrowser.Properties properties = browser.getProperties();
// Register Browser Window listener
browser.addBrowserWindowListener(new BrowserWindowListener() {...});
// Working with user agent
browser.setUserAgent("my user agent");
String userAgent = browser.getUserAgent();
String defaultUserAgent = browser.getDefaultUserAgent();
// Zoom
browser.setZoomValue(100);
int zoomLevel = browser.getZoomValue();
// Register Print listener
browser.addPrintEventListener(new PrintEventListener() {...}); | // JExplorer 3.x packages
import com.teamdev.jexplorer.*;
import com.teamdev.jexplorer.event.*;
// Get IE version
String ieVersion = BrowserFeatures.getIEVersion();
// Enable GPU rendering
BrowserFeatures.enableGPURendering();
// Enable IE 11 Browser Mode
BrowserFeatures.enableBrowserMode(BrowserMode.IE11);
// Create Browser instance
Browser browser = new Browser();
// Create Browser instance in native process of another Browser
Browser browser = new Browser();
Browser browserTwo = new Browser(browser.getContext());
// Create Browser instance in out-process mode
// Browser always runs in out-process mode
// Create Browser instance in in-process mode
// Browser doesn't support in-process mode, only out-process
// Dispose Browser instance
browser.dispose();
boolean disposed = browser.isDisposed();
// Execute JavaScript
JSValue result = browser.executeScript("document.title");
if (result.isString()) {
String title = result.getString();
}
// Get Browser Options
// It's not supported anymore
// Get/Set parent Browser
// It's not supported anymore
// Execute Print Command
browser.print();
browser.print(true, "My Header", "My Footer");
// Get HTMLDocument
DOMDocument document = browser.getDocument();
// Set context menu provider
// Not implemented
// Ready State flag
// It's not supported anymore
// Get IWebBrowser2 COM instance
// It's not supported anymore, because we don't use ComfyJ
// Get OleMessageLoop
// It's not supported anymore, because we don't need OleMessageLoop anymore
// Wait until document is ready
Browser.invokeAndWaitLoadMainFrame(browser, new Runnable() {
@Override
public void run() {
browser.navigate("http://www.google.com");
}
});
// Get context menu HTML element
// It's not supported anymore
// Register navigation listener
browser.addNavigationListener(new NavigationListener() {...});
// Register status listener
browser.addStatusListener(new StatusListener() {...});
// Register popup listener
// It's not supported anymore. Use PopupHandler.
// Set HTML Modal Dialog listener
browser.setHTMLDialogListener(new HTMLDialogListener() {...});
// Set Dialog handler
browser.setDialogHandler(new DialogHandler() {...});
// Set Popup handler
browser.setPopupHandler(new PopupHandler() {...});
// Set authentication handler
browser.setAuthenticationHandler(new AuthenticationHandler() {...});
// Set event handler
browser.setEventsHandler(new EventsHandler() {...});
// Set JavaScript error listener
browser.addScriptErrorListener(new ScriptErrorListener() {...});
// Update Proxy settings
browser.setProxy(new ProxyConfiguration());
// Set Cookies
List<Cookie> cookies = new ArrayList<Cookie>();
cookies.add(new Cookie("name", "value"));
browser.setCookies("http://www.google.com", cookies);
// Set HTTP security handler
// Not implemented
// Track children
// It's not supported anymore. Use PopupHandler.
// Get Properties
// Not implemented
// Register Browser Window listener
browser.addWindowListener(new WindowListener() {...});
// Working with user agent
browser.setUserAgent("my user agent");
String userAgent = browser.getUserAgent();
String defaultUserAgent = browser.getDefaultUserAgent();
// Zoom
browser.setZoomLevel(100);
int zoomLevel = browser.getZoomLevel();
// Register Print listener
// Not implemented |
|