In The Problems with JSP, Jason Hunter, author of the O'Reilly servlets book, paints a different picture from yours about how well JSP serves to make the front end "as purely HTML as possible." Apparently it's quite common for JSP programmers to break the clean separation you describe.
Such non-separation is totally understandable. There are times in a product development cycle when you want to do quick prototyping, and it's convenient to put code right there in the JSP. Problem is, once it gets in it's hard to get out. You have to come up with a class hierarchy and wrap an object and method around the code that you cut out of the JSP. This is doable, but not convenient.
Generally projects have to choose up front whether to go with a rapid prototyping tool like PHP or a strictly structured environment like WebMacro. Or they can go with JSP and have some release management structure in which coding standards are enforced.
Alternatively, they could use BRL for rapid prototyping. If the project grows to require more code separation, it's easy to wrap a procedure definition around code cut from a page, then put that definition in sitedefs.scm. You can make use of all kinds of Java objects as well, though you're encouraged to keep Java-specific code out of individual pages. BRL is not intended to be Java-specific, although the current implementation is.
Servlets that work with JServ will work with tomcat just fine. Why not keep using JServ until tomcat's readiness is more to your liking?
apt-get install jserv
still works for me.
performance not as big an issue as you might think
on
Programming Ruby
·
· Score: 1
Funny you mention JSP. It's only with recent JVMs that
you can get good performance out of JSP or BRL, yet successful JSP sites have been around for some time.
Similarly, PHP3 performance is terrible,
yet people have used it to build many successful
web sites. Just throw more hardware at the problem.
The database is much more likely to be a bottleneck
than the server-side language anyway.
Re. mod_ruby: I haven't looked at it myself, but it seems that even if there are implementation issues
with it, people should be able to write
web apps now that will still work after the implementation
issues are corrected.
"learning new languages can broaden thinking"
on
Programming Ruby
·
· Score: 1
If you want to broaden your thinking re. server-side web programming, try BRL.
Since there's no benefit to switching, why don't you play my Monty Hall simulation a few times choosing to stay with your original choice. Most people choose to switch, and I need more numbers on the "stay" side to make it statistically significant.
Huh? The only CCNV v. Reid case I could find affirms the legislated definition of "work made for hire". The only way an author "loses rights" based on that case is when so much editorial control is influenced as to make a case for joint authorship between the parties. It has nothing to do with the "work made for hire" definition.
How quick the slashdot moderators are to mark "Informative" a misinformational post. If you simply read the US Copyright law definition of "work made for hire", you'll see that non-employee work only falls into this category "if the parties expressly agree in a written instrument signed by them that the work shall be considered a work made for hire."
The URL cited in the article has a JavaScript-driven simulation so you can see what results you get yourself. I just made an on-line version that lets you see total results from everybody who's played. Each page of my simulation has a link to let you see the source code. See my
Monty Hall Puzzle.
So you figure the most profitable plan is to compete with the NYT? Go ahead!
If the news on your site is no different from what's on TV or in the papers, you may face lots of competition down the road. On the other hand, unique content is something that people might pay to get the latest.
I think making the latest content free and the archive content cost is exactly backwards. You should make the archives free, but charge those who want the latest info *now*.
If I subscribed to a site with free archives, I wouldn't hesitate to make hyperlinks to articles I liked. I would never make hyperlinks to archived articles that force someone to pay before they can see them. However, if an article was to become free after some period of time, I might go ahead and link to it now.
The more people link to your site, the more visibility you'll get, and the more subscribers.
It lets you make a page with a yes/no question for someone to answer. They get back your prepared response according to the answer. You are e-mailed their answer.
You could write a class in JPython, inherit from that class in Java, and debug the two together via interactive Kawa Scheme. The JVM's language independence is there regardless of whether or not Sun emphasizes it.
Languages that support continuations (e.g. Scheme) will have the same difficulties on.NET's CLR as they do on the JVM. See the recent thread on comp.lang.scheme about.NET.
My company uses JRun with IIS, one of many third-party servlet engines. This lets me develop BRL apps on my Linux box and deploy on IIS with no modification.
The Civil Engineering course (1.00) now uses Java in the fall term, but still uses C++ in Spring. The CS course on software eng (6.170) now uses Java, not CLU.
Courses like 6.001 and 6.044J continue to use Scheme and will probably always use it. After all, that language was designed for teaching CS principles.
I'm teaching a non-credit workshop at MIT this Friday on using Scheme for server-side web applications.
The original poster's mention of LaTeX would seem to indicate interest in printed reports, which HTML was not designed for. For example, HTML does not allow for having column headers repeat at the top of every printed page, but the LaTeX supertabular environment does.
At my company I'm doing printable database-driven reports using BRL and pdflatex. If anyone wants help doing it the same way, let me know.
Different people have different experiences re. management attitudes toward non-mainstream tools. Especially in this employee-favoring technical job market, you can get a lot of freedom once you prove your ability to solve problems quickly. I'm using Scheme for Intranet web apps in daily use by hundreds of employees.
I suppose if management did start getting hostile to non-mainstream tools, I could bill it as a "Java-based solution". There's just one servlet, which provides the web interface to a Scheme-to-JVM compiler.
Kawa Scheme ==> JVM bytecodes
on
Perl and .NET
·
· Score: 1
I can verify that Per Bothner's Kawa does indeed compile Scheme to JVM bytecodes. There's no intermediate Java code and no need to write out a.class file. You can even do it interactively. I know that it's working because with a JIT compiler, if I make an error in a BRL page, "compiled code" shows up in the stack trace.
The Scheme standard is fairly minimal because its main use is in education, and they want it to be easy to implement a complete Scheme. Real implementations generally include things like xor. There's a movement afoot to standardize such extensions among Scheme implementations.
The reason one doesn't totally get used to programming in Scheme even after a semester course is that the course is usually teaching a series of progressively more interesting CS principles, not giving you lots of practice at one level before moving on to the next. You have to use Scheme in real-world work for a while to get the kind of repetition that familiarizes you with the common constructs and techniques.
Array access in Lisp is pretty ugly, and of course
figuring out how to construct a loop in either Lisp or Scheme is
pretty baffling until you begin to understand...:)
To be more specific, starting from a C-like knowledge of loops, the
apparent Scheme equivalent (do) seems baffling. But once you look at
an example of named let you see that Scheme is actually simpler.
As to array access: If you don't like it, change it. Scheme is so incredibly easy to extend. If you don't like (vector-ref vec i), do something like this:
Scheme Requests for Implementation
In The Problems with JSP, Jason Hunter, author of the O'Reilly servlets book, paints a different picture from yours about how well JSP serves to make the front end "as purely HTML as possible." Apparently it's quite common for JSP programmers to break the clean separation you describe.
Such non-separation is totally understandable. There are times in a product development cycle when you want to do quick prototyping, and it's convenient to put code right there in the JSP. Problem is, once it gets in it's hard to get out. You have to come up with a class hierarchy and wrap an object and method around the code that you cut out of the JSP. This is doable, but not convenient.
Generally projects have to choose up front whether to go with a rapid prototyping tool like PHP or a strictly structured environment like WebMacro. Or they can go with JSP and have some release management structure in which coding standards are enforced.
Alternatively, they could use BRL for rapid prototyping. If the project grows to require more code separation, it's easy to wrap a procedure definition around code cut from a page, then put that definition in sitedefs.scm. You can make use of all kinds of Java objects as well, though you're encouraged to keep Java-specific code out of individual pages. BRL is not intended to be Java-specific, although the current implementation is.
Servlets that work with JServ will work with tomcat just fine. Why not keep using JServ until tomcat's readiness is more to your liking?
apt-get install jserv
still works for me.
Funny you mention JSP. It's only with recent JVMs that you can get good performance out of JSP or BRL, yet successful JSP sites have been around for some time. Similarly, PHP3 performance is terrible, yet people have used it to build many successful web sites. Just throw more hardware at the problem. The database is much more likely to be a bottleneck than the server-side language anyway.
Re. mod_ruby: I haven't looked at it myself, but it seems that even if there are implementation issues with it, people should be able to write web apps now that will still work after the implementation issues are corrected.
If you want to broaden your thinking re. server-side web programming, try BRL.
Since it's better known for Java-to-native compilation, many people don't realize that gcj also includes a JVM.
Since there's no benefit to switching, why don't you play my Monty Hall simulation a few times choosing to stay with your original choice. Most people choose to switch, and I need more numbers on the "stay" side to make it statistically significant.
You can also play an open-source non-JavaScript Monty Hall simulation and see the aggregate results for everyone who's played.
Nobody is happy using ASP/VBScript.
...and advocates of other languages can post equivalents. How good a tool is depends largely on what you want to do with it.
Huh? The only CCNV v. Reid case I could find affirms the legislated definition of "work made for hire". The only way an author "loses rights" based on that case is when so much editorial control is influenced as to make a case for joint authorship between the parties. It has nothing to do with the "work made for hire" definition.
How quick the slashdot moderators are to mark "Informative" a misinformational post. If you simply read the US Copyright law definition of "work made for hire", you'll see that non-employee work only falls into this category "if the parties expressly agree in a written instrument signed by them that the work shall be considered a work made for hire."
The URL cited in the article has a JavaScript-driven simulation so you can see what results you get yourself. I just made an on-line version that lets you see total results from everybody who's played. Each page of my simulation has a link to let you see the source code. See my Monty Hall Puzzle.
If the news on your site is no different from what's on TV or in the papers, you may face lots of competition down the road. On the other hand, unique content is something that people might pay to get the latest.
I think making the latest content free and the archive content cost is exactly backwards. You should make the archives free, but charge those who want the latest info *now*.
If I subscribed to a site with free archives, I wouldn't hesitate to make hyperlinks to articles I liked. I would never make hyperlinks to archived articles that force someone to pay before they can see them. However, if an article was to become free after some period of time, I might go ahead and link to it now.
The more people link to your site, the more visibility you'll get, and the more subscribers.
It lets you make a page with a yes/no question for someone to answer. They get back your prepared response according to the answer. You are e-mailed their answer.
You could write a class in JPython, inherit from that class in Java, and debug the two together via interactive Kawa Scheme. The JVM's language independence is there regardless of whether or not Sun emphasizes it.
Languages that support continuations (e.g. Scheme) will have the same difficulties on .NET's CLR as they do on the JVM. See the recent thread on comp.lang.scheme about .NET.
My company uses JRun with IIS, one of many third-party servlet engines. This lets me develop BRL apps on my Linux box and deploy on IIS with no modification.
The Civil Engineering course (1.00) now uses Java in the fall term, but still uses C++ in Spring. The CS course on software eng (6.170) now uses Java, not CLU.
Courses like 6.001 and 6.044J continue to use Scheme and will probably always use it. After all, that language was designed for teaching CS principles.
I'm teaching a non-credit workshop at MIT this Friday on using Scheme for server-side web applications.
The original poster's mention of LaTeX would seem to indicate interest in printed reports, which HTML was not designed for. For example, HTML does not allow for having column headers repeat at the top of every printed page, but the LaTeX supertabular environment does.
At my company I'm doing printable database-driven reports using BRL and pdflatex. If anyone wants help doing it the same way, let me know.
Different people have different experiences re. management attitudes toward non-mainstream tools. Especially in this employee-favoring technical job market, you can get a lot of freedom once you prove your ability to solve problems quickly. I'm using Scheme for Intranet web apps in daily use by hundreds of employees.
I suppose if management did start getting hostile to non-mainstream tools, I could bill it as a "Java-based solution". There's just one servlet, which provides the web interface to a Scheme-to-JVM compiler.
I can verify that Per Bothner's Kawa does indeed compile Scheme to JVM bytecodes. There's no intermediate Java code and no need to write out a .class file. You can even do it interactively. I know that it's working because with a JIT compiler, if I make an error in a BRL page, "compiled code" shows up in the stack trace.
The Scheme standard is fairly minimal because its main use is in education, and they want it to be easy to implement a complete Scheme. Real implementations generally include things like xor. There's a movement afoot to standardize such extensions among Scheme implementations.
The reason one doesn't totally get used to programming in Scheme even after a semester course is that the course is usually teaching a series of progressively more interesting CS principles, not giving you lots of practice at one level before moving on to the next. You have to use Scheme in real-world work for a while to get the kind of repetition that familiarizes you with the common constructs and techniques.
I didn't understand your suggestion. Could you post an example?
To be more specific, starting from a C-like knowledge of loops, the apparent Scheme equivalent (do) seems baffling. But once you look at an example of named let you see that Scheme is actually simpler.
As to array access: If you don't like it, change it. Scheme is so incredibly easy to extend. If you don't like (vector-ref vec i), do something like this:
(define (pretty-array vec)
(lambda (i) (vector-ref vec i)))
(define a (pretty-array vec))
Then use (a i) wherever you would otherwise have used (vector-ref vec i). Pretty enough yet?
Now back to the advocacy discussion: If I weren't an ardent Scheme advocate, would I have been motivated to share that tidbit?