Java Programming @ SAP - the poor cousin?

Recently I' ve started a kind of poll in the Java forums asking if someone knew any enhancement possibilities for java-side development at SAP mentioning the ABAP customer exits, BADIs, customer includes and enhancement spots as example.
Guess how many answer I received - from WDJ, Java Programming, NWDI and NW Java from: None! All the gurus who usually bubble over with wisdom remained wondrous silent. I also run over help pages searching for some hints regarding this - in my opinion fundamental - questions, with the same result.
Has really nobody at SAP spent a thought about one of the most precious features SAP offers its customers - the possibility to enhance delivered standard-programs and thereby adapt them to their needs without modification?
How are we as Java programmers then supposed to stand the mistrustful glances of our ABAP collegues who wonder why there has been so much noise about this Java thing in the recent years. Thinking about the disadvantages a developer working with Java at SAP has to bear compared to his ABAP collegue - no direct data access, no comfortable debugging possibilities, lots of standalone tools with strange UIs (SDM Remote GUI, Visual Admin - only to name the least glorious ones - he to manage and - last, not least - no chance to enhance SAP Standard programs modification free I have to agree upon one ABAPers opinion on Java: "The hype is over!".
Regards from a very pessimistic Java Developer
PS: Does anybody know a way to unbureaucraticly swap a Java certification against an ABAP one?

I get the question - should I do my development in ABAP or Java - quite often. My answer has become "It Depends."  I getting pretty good at those ambiguous consulting answers, aren't I.
In all seriousness I really do think the answer depends upon several things.  As a company or development group you should analyze the skills that you already have in house.  As you have seen the two development environments are quite close.  The advantages of one over the other will continue to vary over time.  ABAP will add nice features from Java and vise versa.  In the end it is more important that companies leverage their skill sets and existing infrastructure (Software Lifecycle Landscape) to their maximum. 
If you are already a java shop then it makes sense to continue down that development path because your developers will still be very efficient even if they have to access ERP and other SAP application logic and data via RFC or Web Services. 
On the other hand, ABAP certainly isn't as dead as some people claimed it would be by now. Thanks to Web Services ABAP has more flexibility than ever before.  It isn't nearly the closed box that it used to be.  Also the workbench team isn't going to stop innovating either. 
The next question I get is what does SAP do internally when deciding on a language to use.  To a large extent they use the same criteria - what existing skill sets do I have to work with.  They also look at where the data is located. 
That means products like Portal aren't about to change from Java to ABAP.  On the other hand ERP suite development is still heavily ABAP.  The new UIs coming from ERP will primarily be done in Web Dynpro ABAP. 
Even in some newer products that haven't been released yet - the UI was done in Java or Visual Composer and the backend business logic was done in ABAP. It is all about taking advantage of the unique strengths of each environment and the skill sets you have in each.
In the end I don't think Java is the poor cousin any more than ABAP is going to die.  Look at NetWeaver CE and the huge investment SAP has made on top of Java Development there.  At the same time our investment in Java has not come at the cost of the ABAP environment.  Innovations will continue to take place there as well.  I can assure you that within SAP it is the hope and goal to have two top notch development environments within NetWeaver.
Now let me share a little story with you.  My background is obviously ABAP and I doubt I will ever lose my particular passion for the environment.  At the same time I have done a fair bit of NetWeaver Java development in the last year and half or so.  I'm not a super deep expert, but I can hold my own. 
I recently had a requirement to build an MDM Application.  I only had two days in which to build it.  My choices were to use the Java API or the ABAP API.  They are quite similar and both meet all my interface requirements.  I was building a Web Dynpro UI, so the end user wouldn't be able to tell the difference.  Interfacing capabilities being the same and UI output being identical - my decision came down to the environment where I personally could be most efficient.  I could have completed the project in either environment.  But because I knew the ABAP Programming Environment (you know the stuff that goes beyond the basic syntax - the real knowledge that lets you squeeze every last drop of performance out of an application) so well I personally could build the best application in the shorter time in ABAP. 
Now someone with a different background might well have taken the Java path and done just as well.  This is the advantage that SAP provides by continuing to support both ABAP and Java development.  Does every feature and function of both environements line up exactly - of course not.  I'm sure they never will.  But do these differences keep experts in either environment from being able to make any application do amazing things - certainly not.  Personally I feel less constrained in either ABAP or Java today than I have ever felt programming before.

Similar Messages

  • How do I establish a connection to another Java program on the net?

    Hi all,
    I have been reading the java tutorial to find a solution to my problem but I havent really found what Im looking for.
    I want to establish a connection that allows a client to get a copy of an object from a running java-application on a server on the internet.
    I have read about the Socket-class but the tutoral advices only to use it on a locale network. I know IDL and RMI only by name - is this what I should be reading about?
    If one of you guys have a source-code example on how to make java programs communicate over the net, please post it!
    Regards Albert

    Assuming this is "wide area" stuff, not just on a local area network, your best bet is to stick to http connections. You need a web server, probably Tomcat.
    Your client can connect using URL.openConnection().
    As to protocols you could use SOAP. It has the advantage that you can get the code for it for free, but it can be pretty complicated to configure. In particular it only knows how to transmit a limited set of object types and if you want to go beyond them you have to write converters. SOAP servers typically run under an web server anyway. SOAP converts all the data to XML for transmission.
    However it may be simpler to use Java's built in serialisation facility and send your data as an ObjectStream.
    In the set up you're talking about the message going to the server seems a lot simpler than the response. It may make sense to send your data as normal keyword parameters of a POST transaction but to have the server respond with an Object stream. That's well within the normal operation of a web server.

  • Encountering exceptions when running a java program in the db

    when running the following following program in oracle11g, AIX (5300-07)
    import java.sql.*;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    public class DirList
    public static void getList(String directory)
    throws SQLException
    File path = new File( directory );
    String[] list = path.list();
    String element;
    for(int i = 0; i < list.length; i++)
    element = list;
    String fpath=directory+"/"+list[i];
    File f = new File(fpath);
    long len;
    Date date;
    String ftype;
    String sqldate;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:S");
    if (f.isFile()) {
    len = f.length();
    date = new Date(f.lastModified());
    sqldate = df.format(date) ;
    ftype = "F";
    else {
    len = 0;
    sqldate = null;
    ftype = "D";
    #sql { INSERT INTO DIR_LIST (FILENAME, filelength, filetype, filemodified)
    VALUES (:element, :len, :ftype, to_timestamp(:sqldate,'YYYY-MM-DD HH24:MI:SS:FF3'))
    we are encountering the following issues..
    0/0 An exception has occurred in the compiler (1.5.0_10). Please
    file a bug at the Java Developer Connection
    ( after checking the Bug
    Parade for duplicates. Include your program and the following
    diagnostic in your report. Thank you.
    0/0 java.lang.NullPointerException
    0/0 at
    0/0 at
    0/0 at oracle.aurora.rdbms.Compiler.compile(
    0/0 at oracle.aurora.rdbms.Compiler.access$000(
    0/0 at oracle.aurora.rdbms.Compiler$
    0/0 at Method)
    0/0 at oracle.aurora.rdbms.Compiler.doCompile(
    In trace files there are another set of exceptions that are getting generated when this program is running as shown below
    joez_compile_method: failed compiling method oracle/aurora/sqljdecl/SqljDecl.jj_
    scan_token with oracle/aurora/zephyr/util/JITCompileException:class java.lang.Ar
    oracle.aurora.zephyr.util.JITCompileException: class java.lang.ArrayIndexOutOfBo
    at oracle.aurora.zephyr.util.Debug.assert_(
    at oracle.aurora.zephyr.JITDriver.jitMethod(
    at oracle.aurora.zephyr.JITDriver.jitMethod(
    at oracle.aurora.vm.OracleRuntime.jitOneMethod(Native Method)
    at oracle.aurora.vm.OracleRuntime.jitSomeMethods(
    Caused by: java.lang.ArrayIndexOutOfBoundsException
    at java.util.Vector.addElement(
    at java.util.Stack.push(
    at oracle.aurora.zephyr.bytecode.ByteCodeToMIR.push(
    at oracle.aurora.zephyr.bytecode.ByteCodeToMIR.pushRef(ByteCodeToMIR.jav
    at oracle.aurora.zephyr.bytecode.ByteCodeToMIR.translateBasicBlock(ByteC
    at oracle.aurora.zephyr.bytecode.ByteCodeToMIR.translateMethod(ByteCodeT
    at oracle.aurora.zephyr.bytecode.ByteCodeToMIR.translateMethod(ByteCodeT
    at oracle.aurora.zephyr.JITDriver.jitMethod(
    ... 3 more
    We been trying for couple of weeks to figure out the issue.
    Has anyone encountered this issue or having solution in rectifying this please share with us..

    If you mean can you run it as a windows 2000 service so the user doesn't see it yes you can.
    I recommend the following Java Service wrapper program:
    It's quite simple to set up and will start when the user logs in (so long as the service is set to start automatically).
    Hope that helps,

  • How to abend the java program -if the condition fails

    My program counts the number of headers in the input file and if the condition fails to satisfy the number we expected , it should comeout of the java program . Is their a specific statement to abend the program in java .
    if(columnCount == 5)
    // do all the steps
    //abend the program }
    how to do that .... is it System.exit(1) or anything else
    Edited by: 1sai on Apr 23, 2009 6:52 PM

    BigDaddyLoveHandles wrote:
    It must have been that the [card sorters|] were making such a ruckus that I didn't hear it. The model 84 -- 2,000 cards a minute? -- d&auml;mn, that's sweet.
    I remember the first time I saw a card sorter in action, thinking it was kind of cool.
    I also think the teacher used it to describe some sorting algorithm, maybe radix sort??
    You've got me thinking, that might be part of the problem with computing today, not enough moving parts. No big tape drives spinning and oscillating. And few if any line printers anymore. Now there's an interesting piece of equipment.

  • Java program - over the net arguments

    Hi Friends,
    I have a java program that accepts inputs as agruments and produces a result file eg:
    java MyProgram input1.wav input2.wav output.wavThe program works fine if the input files are on local computer but i want the input files to come over the internet eg:
    java MyProgram someone please tell me how to do this. I tried to make a servlet that calls this java program but it didn't worked...
    Please give me some ideas as to how to implement this..

    I would like to make an API, so that when the program
    gets the parameters,it automatically downloads and
    processes them and then provides the output file??
    Do,I need to establish a HTTP connection to that
    server first from which I need to access the files???Have a look at Sun's lesson: Working with URLs:

  • Can i run java program in the same way of .exe program?

    I am beginner in java and i'd like to know that java program can run in the same of .exe program(double click program icon) , instead of typing "java [class name]" or
    choose execute botton from forteCE.
    Thank you for your help
    [email protected]

    You can write a .bat script which launches the java command for you:
    @echo off
    java <your prog name here>
    Then move your .bat file icon wherever you want...
    Tip: if you don't want to see the black VM window, try javaw instead of java.

  • Java Program on the Internet -How? Urgent

    I developed a Mutithread TCPIP socket based Network program "Forex Simulator". It's an applet both from the server side and client side. The Program needs to access the socket as well as Database. The Program is simple. After starting server, many clients can connect and buy and sell currency.
    I ran this in my home LAN. Initially, I was having trouble with running applet which rejects socket connection. After searching on the net I modified the Java Run Time Environment java.Policy file and modify permission to connect to my server IP and it works.
    I have to upload this program on to internet in a shared server. What should I follow to successfully run this on the net.
    There are many java chat program, chart, forex simulator running on the internet. How can I implement my program like that.
    Thanking you.
    Please please reply me, if someone knows it.

    Thanks for your comments.
    1.- Applets are not server side application but, client side, this means that ALWAYS an applet is downloaded to each client machine and if your "server applet" opens sockets, then every client machine will have its sockets opened but not the web server.
    Now I understand what applet really does. My server applet opens socket in my local machine. But I don' want that. I want the program to open the socket on server that means in my case and client will connect to the port of that server.
    3.- To create a server on your web server you need to run a stand alone app on the server or use something like J2EE
    I badly need to implement my program on the internet. Is there any tutorials or example anywhere for "How to run standalone program on a web server " or J2ee.Standalone means it's not an applet, am I right? As ejp mentioned there is no server applet, so how can I make the serverside program running on a server where client can connect to that server.
    Finally, What are the steps of or what is the java technology which can run a chat server on the net where people from all over the world can chat to each other. My program is same as a chat server.
    Thanks again.

  • Putting java programs to the server

    Is there any fast way/tutorial to put a java application to the server for multi users?
    Can it be done easily by using Eclipse?
    Can any one help me please?
    Thank you.

    It's silly to say that I'm very new to Java and Eclipse.
    Actually, I've done a project to update data for a company, and I need to find a way to put it into the company server. This program using Swing to show a GUI and allow one user update data at a time. Then data will be saved to file(configuration file), therefore, only one user can do it at a time.
    Please help me for any quick tutorial or sample codes which are similar to my job.
    Thank you.

  • How to run a Java program without the command line.

    Is there anyway to create a Java program that runs like most programs do in Windows ,by double clicking on their icons?
    Looks kinda cool. Most java-2-exe programs are usually way too expensive and wont work with GUIs and require other dlls/libraries...

  • How to put a Java Program into the System tray

    Hi all of the forum!!
    I have a question. I want to make a monitor program but I don't know how to put the program in the system tray or just to execute the program but automatically (no manual execute), but i dont want that the program appear in a window, just start to function when i start my PC. i hope anybody help me.
    Best Regards
    Bucio, Francisco

    There is a plenty of similar topics here, so you can use the Search on this forum or in Google to find out.
    But shortly, you will need to use JNI or get a ready-to-use library like JNIWrapper (, for example, that lets you do what you want.
    Good luck,

  • Help required - running a Java program from the command line

    I have a small non-graphical Java application, packaged into a Jar file. My program relies on classes in another (external) Jar file.
    When I run the application from the IDE, everything works fine. However, when I try to run the application from the command line, I keep getting a NoClassDefFoundError for classes in the external jar.
    Both the application jar file and the external jar file are in my root directory (C:\).
    My command line call is as follows:
    java -cp c:MyExternalLib.jar -jar MyApp.jar
    Any help greatly appreciated.

    set classpath=%classpath%;c:\myjar.jar;
    here i have specified myjar.jar file as an example u give ur location.after setting the classpath run ur java application.
    java mypgm
    this will solve ur problem

  • Running a java program in the background

    I'm designing a network remote control system in java.
    I was wondering does anyone know if it is possible to run an application at the log in screen in windows 2000. There is no GUI and no command prompt.

    If you mean can you run it as a windows 2000 service so the user doesn't see it yes you can.
    I recommend the following Java Service wrapper program:
    It's quite simple to set up and will start when the user logs in (so long as the service is set to start automatically).
    Hope that helps,

  • Help with java program: Finding the remaining Gas in a Car

    I am a java newbie and I know this is a simple program but I am not getting the required result. Any help will be appreciated.
    Here is the code for :
    class Car{
         public  double gasTank;
         public  double drive;
         public  double fueleff;
         public Car()
              gasTank = 0;
         public Car(double rate)
              fueleff = rate;
              gasTank = 0;
         public void eff(double rate)
              fueleff = rate;
         public void drive(double amountDrove)
              drive = amountDrove;
              double amtRem = (gasTank-(drive/fueleff));
              gasTank = amtRem;
         public void addGas(double amountPumped)
              double amtRem = gasTank + amountPumped;
              gasTank = amtRem;
         public double getGas()
              return gasTank;
    }Here is the code for :
    public class CarTester {
      public static void main(String[] arg) {
        Car myHybrid = new Car();
        double amtRem = myHybrid.getGas();
        System.out.println("Amount Remaining: " + amtRem + " Gallons");
    }I should be getting 18 Gallons in the gasTank but I am getting 0.0. What am I doing wrong?

    And replace
    public void drive(double amountDrove)
    drive = amountDrove;
    double amtRem = (gasTank-(drive/fueleff));
    gasTank = amtRem;
    public void drive(double amountDrove)
      drive = amountDrove;
      gasTank -= drive/fueleff; // same logic as for +=
    }Cheers =)

  • How to run a java program in the JVM of an already running program?

    As far as I know about JVM, each time we run a program a separate instance of JVM is created where the program runs. Correct me if I am wrong.
    Is there any way for another program to execute itself in the same JVM?
    Currently I am working on JFCUnit which is a tool used to automate swing applications. I am trying to automate JConsole.
    If I open "JConsole.exe" through a program and then try to get the handles using JFCUnit, things are not working.
    If I use JConsole.jar in JDK/lib and create a new instance of JConsole and then try to get the handles using JFCUnit, I am able to proceed with automation.
    But here comes the problem :-
    The application which needs to be automated through JConsole requires it to be started with few arguments, which is as follows:
    %JDK_HOME%\bin\jconsole -J-Djava.class.path=%CLASSPATH% -J-Djmx.remote.protocol.provider.pkgs=oracle.oc4j.admin.jmx.remote "service:jmx:rmi://localhost:23791"So this problem can be solved in two ways,
    1. JFCunit could be made to recognize the JConsole.exe which would be running is a different JVM.
    2. JConsole.jar to be used in a way so that it takes the required arguments, hereby an instance of JConsole would be created that too in the same JVM as that of the program.
    I am more interested in the first solution as it would definitely be helpful in other projects as well.
    Please let me know if any other solution is possible.
    Any kinda solution is appreciated :)
    Thanks in advance.

    Give a look at Terracota.

  • Problem with running a java program from the command line

    I have this code:
    package pkg;
    import jxl.*;
    public class TestClass {
         public static void main(String[] args) {
                   Workbook book = Workbook.getWorkbook(new File("d:/testWorkspace/excFile.xls"));
                   Sheet sheet = book.getSheet(0);
                   String s=sheet.getCell(4, 2).getContents();
              }catch (Exception e){System.err.println(e);}
    }I've wrote it in Eclipse, added jxl.jar to the buildpath, and it works fine.
    Then I tried to run it from the command line and I did it like this:
    D:\testWorkspace\testProject\bin> java -cp \jxl.jar pkg.TestClassThe result was:
    Exception in thread "main" java.lang.NoClassDefFoundError: pkg/TestClass
    Caused by: java.lang.ClassNotFoundException: pkg.TestClass
    ...but the file TestClass.class DOES exist in the folder d:\testWorkspace\testProject\bin\pkg\ and the file jxl.jar IS on the root of drive D (like I already wrote, it worked fine inside the Eclipse).
    So, my question is: How to run this code from the command line?
    I have no idea what went wrong.
    Can someone help me, please?

    The current directory is not implied in the classpath.
    D:\testWorkspace\testProject\bin> java -cp .;d:\ pkg.TestClassor
    D:\testWorkspace\testProject\bin> java -cp .;d:\jxl.jar pkg.TestClassI always forget which is right since I never work with jars...

Maybe you are looking for