Advantages and disadvantages of using Jaxer

While I have seen this question asked previously, it has been a while without any satisfactory responses... My attention has been caught by Aptana's Jaxer, and I must say, the concept is quite intriguing.

For those unfamiliar with it, here's a brief overview:

Jaxer claims to be "the world's first true AJAX server". It utilizes the Mozilla engine, allowing scripts to be written in JavaScript with full access to the DOM on the server-side.

Scripts are included on pages using <script> tags, with the option to specify a runat attribute (similar to ASP.NET) to designate whether the script should run on the client, server, both, or act as a "server-proxy" where the functions are executed on the server via AJAX but made available on the client. This setup enables the use of favorite client-side libraries like jQuery and Prototype on the server side as well.

Jaxer can also process documents generated in other languages such as PHP or Ruby, though this might primarily serve as a transitional aid for migrating existing applications to Jaxer.

  • What are the advantages and disadvantages?
  • How stable and mature is the API?
  • How does its performance compare to other server-side HTML preprocessors?
  • Have you used Jaxer alongside another technology (PHP, Perl, Ruby, etc.)? If so, what were your experiences?

EDIT: I've posted a follow-up question addressing an issue I encountered while experimenting with Jaxer: Defining objects when using Jaxer

Answer №1

My experience with Jaxer was brief, but here are my findings:

Advantages

  • The convenience of writing both frontend and backend code in the same language, which is especially useful for validation logic.
  • "Seamless" AJAX communication back to the server, resembling a simple JS function call.
  • The capability to utilize JavaScript frameworks like jQuery for DOM manipulation.
  • The ability to create or edit images using the Canvas API.
  • Access to advanced features in newer JavaScript versions for server-side development.

Disadvantages

  • I encountered instability in their API during the transition to version 1.0, and the documentation was unclear and mismatched with changed functionality. Debugging Jaxer server-side code proved challenging, with unhelpful error messages.
  • Lack of true MVC or even MVP separation between presentation and logic components.
  • Difficulty in implementing E4X (XML in JavaScript), a significant feature that I could not get to work.
  • Limited framework support for creating complete applications, requiring building from basic elements.
  • Lack of templating or reusable component assistance, making it more difficult to implement compared to other platforms.

In conclusion, Jaxer shows promise as a postprocessor complementing another web framework rather than standalone use. It could enhance an existing site with dynamic features shared between server and client, simplifying the creation of interactive pages. However, relying solely on Jaxer for application development may not be ideal due to its immaturity. Its potential growth and progress are worth monitoring.

Answer №2

While browsing, I stumbled upon these performance benchmarks.

From what I can see, Jaxer seems to outperform Rails, but falls short compared to php...

Answer №3

@BRH: Your insights are truly profound. I fully agree with the "Pros" and "Cons" 2, 4, & 5 that you mentioned, along with your overall assessment. It seems they didn't originally aim to disrupt the market for upstream frameworks, but if they could do so while maintaining their current level of clarity and coherence, that would be remarkable! Their approach is quite refreshing!

P.S. I recently came across a <jaxer:include tag that allows for injecting fragments into the page before server-side script execution, which could prove advantageous in certain code-reuse scenarios. There might be further discoveries awaiting me in this area.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Is there a seamless way to effortlessly upload massive files to s3 through an adminjs dashboard without encountering any glitches?

Attempting to upload large files (40mbs+) to s3 using the @adminjs\upload feature on the adminJS dashboard. While testing locally, most files are successfully uploaded but it takes a considerable amount of time. However, when attempting this on the AW ...

Removing duplicate values in Vue after sorting

Explore <div v-for="todo in sortedArray"> <b-button block pill variant="outline-info" id="fetchButtonGap" v-model:value="todo.items[0].arrivalTime"> {{fromMilTime(todo.items[0].arrivalTime)}} < ...

Retrieving user information from the database and adding it to the specified element

I've been grappling with what seems like a simple question for the past hour. Below is a script that I have which pulls all active reservations from the reservations table. require("../includes/connect.php"); function dispAllReservations(){ $i= ...

Recalling the layout following the user's computer restart

I am creating a simple online editing tool (similar to Microsoft Outline) for coursework and I would like the outline details to be saved even if the user restarts the system. How can I achieve this? <html> <head> <title>Editor</ ...

How can serial numbers be sorted using a JavaScript If Statement based on 2 criteria?

I'm currently enrolled in a JavaScript coding course where I am tackling a task involving validating serial numbers. The requirement is to check if a serial number is valid and then add it to an array to store all the valid serial numbers. The criteri ...

How can I send an item to a dialog in a different VueJS component?

Having multiple smaller components instead of one big component is the goal for my project. Currently, I have a component with a <v-data-table> that displays various items. Each row includes a button that, when clicked, opens a <v-dialog> showi ...

The Ckeditor is only sending a portion of the text when submitting it

Currently, I am utilizing ajax to collect the data from ckeditor for submission. However, I've encountered an issue where only content before the initial apostrophe is successfully being sent to the database. Can anyone pinpoint what I might be doing ...

Is there a way to modify initialValue's value following every iteration?

I need assistance in changing the value of initialValue after each operation. For example, if I input 1000, the output should be 11,000 (10,000 + 1,000). Then, if I subtract and input 2000, the output should be 9,000 (11,000 - 2,000). Can anyone provide gu ...

The jQuery ajax POST data variable has a maximum capacity of holding 199 JSON arrays

I am facing an issue with a PHP web application where I store data in an array variable called $excel. This array typically contains around 500 to 600 rows (arrays). However, when I attempt to convert this array into JSON using jQuery ajax, I encounter a ...

Numerous routers available for enhancing functionality in an Ember application

Can an Ember app have multiple router.js files? By default, one router.js file will look like this: import Ember from 'ember'; import config from '../../config/environment'; var Router = Ember.Router.extend({ location: config.locat ...

Development is hindered due to Cors policy restricting access to the localhost webapp

Currently, I am working on developing a web application and an API simultaneously, but I'm facing some issues with CORS blocking. This concept is relatively new to me, and I'm eager to improve my understanding. Firstly, I have set up an Express ...

Issue with vue-apollo package causing GraphQL query not to display on the frontend

Currently, I am expanding my knowledge of GraphQL and working on a project where I aim to display queries in the front end. To achieve this, I have incorporated the package GitHub - Akryum/vue-apollo: ...

Triggering Events with Angular Checkboxes

I'm having trouble getting a console log to trigger when the user checks one of the checkboxes. The script is working fine for everything else, but checkbox clicks are not registering any events. Any suggestions on why this might be happening? (Just ...

Transmit a JSON array from a controller to a JavaScript variable

I have retrieved a JSON array from a database and it is set up in a controller like this: public ActionResult highlight() { var statesHighlight = db.Jobs .Select(r => r.State); return Json(statesHighlight , JsonRequestBehavi ...

The NetSuite https.post() method is throwing an error that reads "Encountered unexpected character while parsing value: S. Path '', line 0, position 0"

I'm currently facing an issue when trying to send the JSON data request below to a 3rd party system using the "N/https" modules https.post() method. Upon sending the request, I receive a Response Code of "200" along with the Error Message "Unexpected ...

Unable to utilize the "fs" module within a Three.js application

After utilizing this base code to create an app with Three.js, I attempted to incorporate node's fs module for filesystem interaction. Despite adding const fs = require("fs") in my app.js file, the module could not be located. The error mess ...

Sending checkbox selections to PHP using AJAX and jQuery

I'm currently working on integrating a contact form with bootstrap alerts (for success), validation, ajax, and php. One challenge I'm facing is passing checkbox values to php. The email submission fails to go through currently. When I disable the ...

Exploring recursive looping within a directory using Emscripten's File API

Is there a way to iterate through files in a folder using Emscripten? For example, I have created a folder called '/res' (FS.mkdir('/res')) and added some temporary files and subfolders inside it. How can I go about looping through th ...

Tips for resolving an error in PHP and MYSQL code where data is being selected from the incorrect table in the database

I am working on a PHP code with MYSQL. It involves selecting data from the database using a dropdown list with AJAX and displaying the results on the screen. I have three dropdown lists that are dependent on each other and each dropdown has its own table t ...

What could be causing the jQuery slidedown to malfunction within my table?

My slider is not working when I include a table on my website. The slider works fine without a table, but I need to display members in a table format. Can anyone help me identify the issue with my code? The information needs to be displayed below the nam ...