Hier nur ein paar kurze Gedanken über die Migrierbarkeit von BSP-Views
in den Java Stack. (Es gibt weder ein konkretes Projekt noch auch
irgend eine Zeile Code, es interessiert mich nur grundsätzlich).
Ich beschränke mich zunächst auf die Views. Dass das MVC-Framework
ebenfalls nach Java zu migrieren wäre, ist klar, aber sei hier einmal
vorausgesetzt.
Syntaktisch gibt es zwischen BSP-Views und JSP-Views nur einen
wesentlichen Unterschied: Die eingebettete Sprache ist in BSP nicht
Java, sondern ABAP. Views sind daher umso besser von BSP nach JSP
migrierbar, je weniger eingebettetes ABAP sie enthalten. Wer sich an
die Designempfehlung "Viewcontexte" hält (wie in
http://bsp.mits.ch/supplements/context.htm
und im Kapitel 6.11 des BSP-Praxisbuchs beschrieben), hat es mit einer
allfälligen Migration einfacher. Wer sich nicht daran gehalten hat -
kein Problem: Dann ist eben nur vor der Migration noch ein
Refactoringschritt nötig "Auslagern von ABAP-Code aus dem View in den
Viewcontext". Viewcontexte lassen sich ja auch nachträglich noch
bequem einführen.
Im Ergebnis enthält der Scriptingteil von BSP-Views dann nur noch
Referenzen auf Attribute und Methoden sowie minimales ABAP.
Typische Beispiele:
1.) Direkte Wertangaben
<z:table binding="//fa/gt_data" exit="<%=ctx%> ... />
<span class="<%=ctx->gv_span_class%>" ...
2.) Wertübergabe mit Returningparameter einer Methode
<z:input value="<%=ctx->get_value( )%>" ...
3.) Iteratorkonstrukte
<% while ctx->has_more_lines( ) eq 'X'. %>
...
<% endwhile. %>
Typ 1 und 2: Hier müsste nur der Pfeil -> durch einen Punkt ersetzt
werden, um syntaktisch korrektes JSP zu erhalten. Die Schleife im
dritten Beispiel müsste so übersetzt werden:
<% while (ctx.has_more_lines() == 'X') { %>
<% } %>
Das ist zwar aus Java-Sicht nicht besonders schön hingeschrieben - man
würde eher schreiben
<% while (ctx.hasMoreItems()) { %>
...
<%} %>
Aber auch die erste Variante würde funktionieren und wäre von einem
mit der Übersetzung betrauten Perl-Programm viel einfacher zu
produzieren. (Perl bietet sich für solche Aufgaben an, wie ich in
meinem Augustblog beschrieben habe:
http://ruediger-plantiko.blogspot.com/2008/08/perl-als-portierungshilfe.html
).