Query on Jython with Web Start - jython

I am looking at creating a jython application and deploying it as a java web start.
My query is related to a concern that for web start deployment, we have to distribute the jython standard jar package also along with our application jar.
From all the web resources , this is what I hear. And the concern is that this will make the download time of the application significantly large as jython jar file is nearly 9 Mb.
If anyone of you has deployed a jython app through web start, can you clarify if we need to bundle the jython jar package along with our application files or only the application files in a standalone jar file ( this solves my problem)
Regards
Shyam

OK , as I figured out...I have to package the jython jar also along with the application jar to make it work.
The reason is that, the application jar consists of python code which the client JVM has no way to understand unless it uses the jython jar package.
As I hear jython has no support currently to convert python code to java classes. Unless this is possible , the jython jar package has to be included.

Related

How to speed up deploying time of jar in a remote server?

Every time I want to test a java project written with Eclipse IDE I need to upload the .jar file (which is heavy) to a Testing Environment via SSH and that process takes almost 15 minutes. It's uncomfortable to test any piece of code there because I have to wait that specific amount of time. The problem is that the upload speed cannot be increased (it belongs to the client). How can I reduce my deployment time for this kind of task?
Testing Server: Red Hat Enterprise Linux Server release 6.5
Is Jar contains embedded appserver like tomcat or it is deployed to application library path ?
If you can de-compose the module & split into another jar (as jar creation is in your scope) it might help you to create small jar so that you can transfer the jar quickly.

Intellij IDEA generating html y jnlp for java fx artifact

Why when I'm generating an artifact for a javafx application using Intellij IDEA, besides the .jar, it generates a .html and a .jnlp file?, are those two necessary for the application to work, if not is there a setting I can change in order to don't create those anymore?
Files Required for Various JavaFX Execution Modes
it generates a .html and a .jnlp file?, are those two necessary for the application to work
The files required for deployment depend on the execution mode of your application.
If your application is embedded in a browser (e.g. executes via the Java plugin like a traditional Java applet), then you require all of the .html, .jnlp and .jar files.
If your application is launched from a browser via Webstart using the Java deployment toolkit, then you require all of the .html, .jnlp and .jar files.
If your application is launched via Webstart from a web page via a direct href link to the jnlp file, then you only need the .jnlp and .jar file.
If your application is distributed as a "standalone program" (e.g. "Users launch it using a Java launcher, such as java -jar MyApp.jar, or by double-clicking the application JAR file."), then you only need the .jar file.
If your application is distributed as a "self-contained" application then you need none of the .jnlp, .html or .jar files, as everything required to run your application will be packaged into a native install package (e.g. .rpm, .msi, .deb, .dmg) that you will distribute.
Suggested Approach
As you will be using the "standalone program" form of distribution, you only require the .jar file for distribution and can ignore other files created by the Java packaging tools.
While you could have Idea package your application as a JAR by choosing Build | Build Artifacts | Edit... | + | JAR | From modules with dependencies..., I don't recommend that as you will also need to set a main class in the manifest and will lose some of the functionality of files which are packaged using Idea's "JavaFX Application" packaging type, such as in-built detection that the Java runtime used to launch the application meets minimum requirements to run JavaFX applications and transparent network proxy support.
So instead, just use, unchanged, the Idea artifact packaging configuration that you have already setup. Ignore the .html files and .jnlp files output. Just distribute the .jar file to your users along with instructions on how to launch it either via java -jar MyApp.jar or double-clicking the .jar after a Java runtime has been installed on their machine.
Portable Build Advice
If it is only you developing the project and you are unfamiliar with external build tools such as maven or gradle, then it is (probably) simpler to use the artifact packaging features built into your Idea IDE rather than to learn and use external tools.
If your project might potentially be worked on by other developers or builds are to be produced and tested within a continuous integration system such as Jenkins, I do not recommend relying on IDE specific build systems such as the artifact packager in Idea. Instead, use an external build tool such as maven or gradle. There is a maven plugin and a gradle plugin for JavaFX build.

How to generate 64-bit version of sikuli JAR?

I am working on developing test automation code in selenium, I want to use 'sikuli' inside my code to handle windows and Flash objects in my web application,
I'm using 64-bit JVM, but there is no 64-bit version of Sikuli available, this is resulting in an error while running the code,
"Can't load IA 32-bit .dll on a AMD 64-bit platform"
I could not find a 64-bit sikuli Jar on internet, but I found that Sikuli source code is hosted on GitHub, could someone help me understand if I can use that source code and compile it into a jar of 64 bit version?
I'm not sure if this is possible or not.
If you install Sikuli 1.0.1 you have the option to install 6 packages with it as well. I would recommend installing the first 5. Then you will have all the things you are ever going to use.
If you also work on different sytems other then Windows, the 6th packages is also advisable.
I have installed all 6.
Finally got this working, here is what I did,
Download the sikuli set-up Jar from
"https://launchpad.net/sikuli/sikulix/1.0.1/+download/sikuli-setup.jar"
Save this jar in a folder 'SikuliSetup',now create a sub directory
'Downloads' which will come into picture later.
Run the above Jar, this will generate two files under the above
directory.
Now run the 'runSetup.bat' file generated from above setup. This
will start the setup, now select the 4th and 6th option in the
'sikulisetup' pop-up and click on 'setup Now'.
The above step will fail for most people due to default security
issues.
If the above step fails then you need to download an offline
version of this jar from this URL
"https://launchpadlibrarian.net/156273987/Sukuli-1.0.1-Offline-Setup-Java-option3-option4.zip".
UnZip the above file and copy the '1.0.1-3.jar' file to 'Downloads'
directory created under the 'SikuliSetup' directory previously.
Now run the 'runSetup.bat' file again, this will generate a new
jar file 'sikuli-java' and its dependent libraries under 'lib'
folder.
That's it, now copy this jar 'sikuli-java.jar' to your java build
path in eclipse.
Now Java will use this sikuli libraries without any issues.
Once after you setup the jar file under build path, restart the
system and login again.

To use ServiceMix my project has to be an OSGi bundle?

I' starting to use ServiceMix and Camel and I've run through many examples.
It seems that the examples that are OSGi can be deployed in ServiceMix via hot deploy or via console, but I don't know how to deploy a project that is not an OSGI. Can it be done?
For example, I'm looking at the example project from Camel 2.10.0 called camel-example-cxf-proxy. I did some alterations and now I wanted to load it in ServiceMix. If I copy/paste to the deploy directory it is loaded but when I try to run it via osgi:start id it fails.
However if I run it from the IDE as a standalone it runs just fine and I can send and receive requests via SoapUI.
When I'm done with the examples I'll want to create my own project in eclipse and do tests in the IDE and in ServiceMix. I don't really understand the advantage of OSGi yet. SO I'm not too compelled to use OSGi for my project.
My main question is: Can I deploy a non-OSGi non-JBI compliant project in servicemix? Something like the camel-example-cxf-proxy. If yes, how can I do it? If no, how can I OSGi-fy the camel-example-cxf-proxy?
Thank you :)
Apache ServiceMix which uses Apache Karaf as its kernel, support pluggable deployment units. Though OSGi is the main unit.
You can deploy JBI artifacts (eg JBI was used as deployment units for Apache ServiceMix 3.x). So we offer that as a migration path to run JBI in SMX 4.x.
A plain WAR file can be deployed as well. You can for example just drop a .war file in the deploy directory. If you deploy from the shell, you need to prefix the deployer with war so it knows to use the war deployer.
There is some documentation about the various pluggable deployers here
http://fusesource.com/docs/esbent/7.0/esb_deploy_osgi/UrlHandlers.html
For example to install an Apache Wicket WAR example using Maven you can do from the shell:
osgi:install war:mvn:org.apache.wicket/wicket-examples/1.4.7/war?Web-ContextPath=wicket
The Apache documentation about deployer is mainly documented at Apache Karaf
http://karaf.apache.org/manual/2.2.9/users-guide/deployer.html
Now to deploy OSGi applications can be a bit of pain to assemble. And that is why FuseSource created FAB to make it much easier. I blogged about this a bit, which references to videos and more material: http://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html
With FAB you can just deploy regular Maven projects out of the box without any OSGi pain.
If your project is a maven project, you can try :
mvn install
Then start your servicemix, and in servicemix command line :
install mvn:groupId/artifactId/version
This will prompt a bundle ID. Then, juste start the bundle :
start <bundle_id>
You can check the state of your bundle with command "list"
The project has to be a bundle to be installed in servicemix / karaf. So the steps to make a camel project work in OSGi are the following.
Use the maven bundle plugin in the pom and configure it to import / export the necessary packages if necessary.
Make sure your camel context is defined in a way that OSGi can start. This is either in the activator of the bundle or in a spring config in the right location or with a blueprint config in the right location.
See two of my karaf tutorials for the details:
CXF: http://www.liquid-reality.de/x/EoBk
Camel: http://www.liquid-reality.de/x/G4Bk

Deploying simple scala app(non-webapp) managed with maven

I am new to the java/scala stack in general. So far I have a relatively simple scala application (not a webapp) setup and built build with maven2, and I'd like to be able to deploy the output to one or more production server (ubuntu on EC2, but that shouldn't matter I assume)?
My main questions are:
1) What's the best way to get all the dependent (third-party) jars installed on the production server? maven takes care of installing them on my development box, how does that work in prod?
2) I can run my app with mvn scala:run, but what's the right way to start the app in production?
3) How do I deal with subsequent deployments?
Any pointers/resources will be appreiated! Thanks a bunch in advance for helping a noob! :)
I tend to use the Maven App Assembler plugin to package dependencies, my own code, and create startup scripts. Basic use is described in the excellent Maven book from Sonatype.
For the most flexibility, it can generate Java Service Wrapper scripts, which allow the application to be run either as a command line application, a Windows Service, or a Unix Daemon.
This approach is not specific to Scala applications. You just need to know the main class of your application, e.g. sample.Main$ in the code below.
package sample
object Main {
def main(args: Array[String]) = println("hello world")
}
retronym's answer looks like the best solution but if you just want something really simple you can use the Maven assembly plugin. All you do is add it as a plugin to you pom.xml then do mvn assembly:assembly and it will build you a jar with all your dependencies (including scala lib) unjared into it. So you can then just run your application with java -cp my.jar MyMainClass.