The company I currently work for builds enterprise software for educational facilities. I just finished a plugin for one of their products that integrates it into Moodle. This was simple and quick because all I had to do was create the source code and then bundle it up into a .zip.
Now they are coming to me wanting me to do the same thing for facilities using Sakai. I have realized that Sakai is basically compiled java running on a server.. yet am wondering if it has any plugin based or modification system I can utilize to integrate our product into it?
Also thanks in advance. :)
Sakai has 2 main methods for developing a new plugin (also sometimes called a tool).
LTI (1.0 and 2.0) - Sakai 10 supports the IMS LTI 1 and 2 specifications (it is the first LMS to have support for both). Older versions of Sakai (2.7 or newer) support LTI 1.0. This standard allows development of a tool which runs on it's own server but integrates with the learning system via a launching protocol.
Sakai tool webapp - Any Java webapp can be integrated into Sakai as a tool by adding a meta file (tool.xml), adding some parts to the web.xml, and optionally loading CSS/JS in the header and using Java APIs to access the Sakai kernel. More details about that are available in the Sakai wiki: https://confluence.sakaiproject.org/display/BOOT/Sakai+Programmer+Manual
In addition to the "tool plugins" mentioned by Zach above, Sakai also supports extensions to authentication via the UserDirectoryProvider API. Most of the common authentication methods (password, Shibboleth, LDAP, Active Directory, CAS) are already supported, but custom ones are not that difficult to write as well.
Related
I read here that it's possible to deploy a JavaFX application into a Web Browser:
embed-a-javafx-application-in-a-html-webpage
Now I got stuck at the beginning when he talks about using the java packager to create an executable .jar file. I'm using Maven which uses JavaFX 18, so I followed this tutorial on how to package a java project
java-packager-with-jdk11
Here I got confused with the tools he uses. I downloaded the listed tools and moved the jpackager files into the according directories. Still in cmd it gives me an "Error during initialization of boot layer": jdk.packager not found.
It's pretty worth it knowing how to create a Package from a Java Project, but is this the proper way?
tl;dr
No, not realistic.
You have a choice of alternatives.
Legacy technologies
That page uses legacy technologies, Java Web Start and Java applets.
Java applets have been phased out by all web browser makers, so Oracle consequently decided to phase out the technology. Java applets were first deprecated in Java 9, and later deprecated for removal in Java 17.
Oracle no longer expects end-users to have a standalone JRE or JDK installed on their computer. So Java Web Start is no longer available by default for the consumer market. Java Web Start is no longer included in Java 11+.
However, an open-source implementation continues in the OpenWebStart project. For some environments, such as corporations or schools where the installed base of computers is centrally managed, OpenWebStart may be a useful way to distribute apps.
Ship your app with JVM bundled
Oracle now expects desktop apps and mobile apps to bundle a JVM within their product. This does mean the app must be built in editions, one edition for each supported chip architecture and OS, but also allows the app to be tested with the same JVM that will eventually run the app.
For more info, see the Oracle white paper (PDF format), Java Client Roadmap Update of 2020-05.
New tooling is available to support this JVM-within-app packaging:
Java Platform Module System (JPMS) in Java 9+.
jlink in Java 9+.
jpackage in Java 16+.
Search Stack Overflow to learn more about packaging JavaFX/OpenJFX apps for distribution. Many Questions and Answers have already been posted on the topic. The topic is rapidly evolving, including cutting-edge approaches such as using GraalVM for ahead-of-time compilation to run native.
Vaadin Flow
If you want to build a single-page web app written in pure Java without you needing to learn HTTP, HTML, CSS, JavaScript, WebSockets, Push, etc., consider using Vaadin Flow. This open-source framework is based on venerable Jakarta Servlet technology.
You write Java code similar to that in JavaFX, defining forms by specifying widgets arranged with layout managers. Vaadin Flow then auto-generates the needed HTML+CSS+JavaScript to render the user interface remotely in the web browser while maintaining the state of your app on the server. Pure Java on server, no Java on client.
I've found exactly the same question I just made but it is 7 years old; so I'd like to have an "updated" answer if it is possible. Thanks.
Old days
As commented by TrogDor, there were previously two ways to deploy a Swing app through the web:
Java Applet technologyYour app would appear within a rectangle on the web page, within the browser.
Java Web Start technologyClicking a link on a web page would download a copy of your Swing app to the user’s local machine, where your app would then be launched locally using a locally-installed JVM. So your app runs separate from the web browser. This click-to-download-and-run process is defined by Java Network Launching Protocol (JNLP).
Both of these are being phased out.
➥ For details, see the white paper Java Client Roadmap Update published by Oracle, updated 2020-05-11.
Nowadays
The modern approach is to build a Swing and/or JavaFX app, then deploy by using a packaging tool to include a JVM. You end up with a complete self-contained self-launchable application.
This means you need multiple builds, one app for each platform your users may deploy on (macOS, Linux, BSD, Windows, and so on). While that is an additional burden to you, the flip-side is that you control exactly what version of Java is being used to run your app.
Because of the Java Platform Module System (JSR 376) in Java 9 and later, you can now strip down the bundled JVM and libraries to include only the parts actually used by your particular app.
The build tools for packaging your app have been rapidly evolving in recent years. So be sure to do your research to find the most robust and modern tooling.
Alternatives
You might consider any of these alternatives:
Remote execution
OpenWebStart A re-implementation of Java Web Start
GraalVM Ahead-of-time native-code compilation of your Java app
Vaadin Flow Using Java to build desktop-style apps delivered as web apps
Remote executions
Some vendors may offer a product or service to execute your Swing app remotely while displaying the user-interface within a web browser.
One such company is WEBSWING Ltd. with their Webswing product.
OpenWebStart
You might be interested in a separate implementation of Java Web Start technology.
While Oracle is phasing out Java Web Start, there is an open-source implementation of JSR 56: Java Network Launching Protocol and API called OpenWebStart. See GitHub. This project is currently maintained by the company Karakun, based on the IcedTea-Web core functionality developed at Adoptium (née AdoptOpenJDK).
GraalVM
A cutting-edge alternative is to build an entirely native-code ahead-of-time compiled version of your app using GraalVM.
Vaadin Flow
An entirely different way to build a web app by using Java is the Vaadin Flow framework.
You specify your user-interface layouts with widgets in a manner quite similar to Swing, specifying an arrangement of widgets (buttons, fields, labels, etc.). You can do so using your choice of straight Java code, an XML-based description language, or a visual design tool.
At run-time, Vaadin automatically automatically generates the HTML, CSS, and JavaScript necessary to render your app remotely on the client user’s machine within a web browser. So, you have pure Java on the server-side, and no Java on the client-side, just Web standards technologies built into all modern browsers.
More info
All of this has been covered many times already on Stack Overflow. So search to learn more.
For tips on obtaining a JVM to bundle with your app, see How to get java 11 run-time environment working since there is no more jre 11 for download?.
Nowadays you can run Swing app on server with UI in the browser. You can find example here: https://github.com/JetBrains/projector-demo.
Update: JetBrains ceased development of Projector as a separate product. See their notice. They have incorporated the technology for their own use in their Gateway product for remote execution of their IDE products.
I am curious to set up some services for a NSF by writing Custom Database Servlets as found in the presentation 'IBM Connect 2016: REST Services in Domino - Key to modern Web Applications'.
Unfortunately the sample code in the NSF is limited to display only the data from a view. So not a single doc or handling of other than get methods.
I found some more interesting code here https://github.com/edm00se/AnAppOfIceAndFire but then the samples here a more advanced so this does not help with quickly getting on the learning ladder.
Does anyone has a more simplified of a Custom Database Servlet with handles both collections and single documents with CRUD support?
My preferred option is to build from scratch in a plugin, for which reason I uploaded a starter plugin that uses OpenNTF Domino API onto OpenNTF. Full documentation is available on the OpenNTF Wiki.
The usual plugin development environment is required - Eclipse, XPages SDK from OpenNTF, IBM Domino Update Site for Build Management from OpenNTF. OpenNTF Domino API may also need installing to compile (I'm not sure, I have the source code in Eclipse). If so, I can work with someone to resolve that and update the documentation accordingly.
If you're looking for a simpler approach within an NSF, SmartNSF on OpenNTF seems to be a good option for developers looking to get more quickly up-and-running. It's very new at the moment, so documentation is pending, and consequently reaching out to the project chef is recommended.
Stepping beyond Domino Designer may be more advanced, but future-proofs skills.
Are there ready solutions (gems, plugins, libraries, etc) for integration ruby (rails) applications and jbilling?
I didn't find even api client for ruby.
I need someone to share his experience with integration. Jbilling has web-service (SOAP ,Java RMI, Burlap) but there is no specific gem for easy accessing and editing data via API.
JRuby 1.6.0 was Released yesterday.
Lines from jbilling manual "All of the API classes are located in the jbilling_api.jar file located in your jBilling
distribution.
The API also makes use of several third-party libraries, such as the Log4j library and
Commons Logging, which provides a powerful logging infrastructure; Spring, which
handles configuration and remoting; CXF, a SOAP library; and Hessian, for
Hessian/Burlap support. You'll therefore need to provide the log4j.jar, commons-
logging.jar and spring.jar files in your class path, if your project does not already
include them.
"
Is that good practice to include so many jars in jruby rails application ?
You can try making your app run on JRuby and using the Java libraries directly. We did an experimental branch of our own app for a similar reason and found some useful projects in the process:
https://github.com/nicksieger/warbler/
https://github.com/calavera/trinidad
In the end we didn't go for JRuby, for various reasons that weren't necessarily of a technical nature.
What version of jB are you using? You could use this project as an example to do your integration.
You can also build such a project from scratch using wsdl2 java utility. Typically, you can access jBilling wsdl at localhost:8080/jbilling/services/jbilling?wsdl assuming jb is running on your local at port 8080.
Id like to set up some easy in use and installment bug tracker and wiki(Im only interested in free solutions), what do you recommend?
P.S. I like mantis, but its written in PHP, so I cant deployed it on normal JBoss.
Issue tracker
I would suggest running MantisBT on Tomcat using Quercus
Quercus is Caucho Technology's 100% Java implementation of PHP 5 released under the Open Source GPL license. Quercus comes with many PHP modules and extensions like PDF, PDO, MySQL, and JSON. Quercus allows for tight integration of Java services with PHP scripts, so using PHP with JMS or Grails is a quick and painless endeavor.
Even more, it support MantisBT out of the box:
The growing list of PHP software certified running on Quercus includes DokuWiki, Drupal, Gallery2, Joomla, Mambo, Mantis, MediaWiki, Phorum, phpBB, phpMyAdmin, PHP-Nuke, Wordpress and XOOPS.
Regarding installation, Tomcat instructions are available. Quercus is implemented primarily as a servlet and it will run in any application server including Tomcat.
Wiki
I have had good experience with XWiki:
XWiki Enterprise is a professional wiki with enterprise features such as Blog, strong rights management, LDAP authentication, PDF export, full skining and more. It also includes an advanced Form and scripting engine making it a development environment for data-based applications. It has powerful extensibility features such as scripting in pages, plugins and a highly modular architecture. See the full feature list for more.
The best ones out there are JIRA and Confluence. Not free but pretty cheap and far superior to any others i tried so far.
Both java based and run on tomcat. They also provide it for free for open source projects.
The Liferay Portal has a fair Wiki Portlet built-in as well.
But I agree with jbx, JIRA and Confluence are not that expensive and really worth the money.
A nice and simple wiki is JSPWiki,
as issue tracker you could have a look at JTrac.
I use both in projects, they are free and simple to setup.
look at jboss portal - it has wiki portlet.
anyway pure java wikis and trackers are not popular, even if you find one it will have less features compared to php ones.
I suggest to create apache instance and install something like mediawiki and bugzilla (we did so).
by the way, you can run php in jboss: http://www.caucho.com/resin-3.0/quercus/