• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Dazed and Confused

 
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am designing a data acquisition, processing and display system that will use several processing nodes (linux pc) to distribute the load, and are considering using Java. The system will run stand-alone (not on the www), will have lots of scientific plots (x-y, color contour, waterfall) and performance is important. I have a rudimentary knowledge of Java as a programming language, and am aware of concepts such as EJB and JMS, but I am overwhelmed with the options available to me (and my team of 4 s/w engineers). My thoughts are to use Jbuilder and JClass as my development environment, but before I hurtle head-first into a design and development effort, I am wondering the following:
* What IDE, (IDEA, JBuilder, Eclipse) if any is appropriate for this type of system?
* Should I be concerned about MVC and other Patterns?
* What about Struts?
* What is the best way to integrate TCP/IP into Java?
* Are there any good references to using Java for stand-alone apps?
* What Java technologies should I be looking at?
I realize that I am asking a lot. I am looking for guidance as to what and where to look for information, not necessarily answers. Thanks.
Also, which forum(s) should this be posted to?
[ May 03, 2004: Message edited by: William Zimmerman ]
[ May 03, 2004: Message edited by: William Zimmerman ]
 
Ranch Hand
Posts: 539
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'll only comment on two of those points, but my thoughts...
  • IDE-wise, it shouldn't be critical what you or your developers choose and I'm not sure that any is more appropriate than any other (though I could be wrong). Use Apache Ant as your build tool, and then by using ant plugins for IDEA and Eclipse etc, you'll be independent of your IDE. I'd say it's a Bad Thing for development to be tied to a particular IDE.
    In terms of which IDE is best, well, we can talk about that forever. I'd let your developers choose their own. My preference is Eclipse because (1) it's free, and (2) it's got every feature I need and most that I want. People I work with swear by IDEA though, but my impression is that to get your value for money with IDEA you have to be a pretty heavy user and spend a bit of time getting familiar with it.
  • Struts is primarily for web-based presentation, so from what you've described, it won't be of any use to you. Apparently Java Server Faces allows you to completely abstract the UI from the business logic to the point where you could substitute a Web GUI for (say) a Swing-based one, or even commandline. However, I haven't used it at all, but it might be a good way to go to ensure extensibility.


  • Some other brief points - MVC is an essential for any nontrivial application, and you'll find that Java networking is excellent. TCP/IP is easy and there are tutorials everywhere, and you have the option of using RMI, CORBA or Web Services protocols if they seem appropriate.
    Anyway, you'll find others here have a lot more experience on this than me, but those are some starting points.
    Cheers,
    --Tim
    [ May 03, 2004: Message edited by: Tim West ]
     
    Ranch Hand
    Posts: 776
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    -Build (and configuration management) Tool: ant (or maybe maven if you are just starting)
    -IDE: leave it to the individual developer, but ant integration is a must.
    -Source Control?: You need to think about this.
    -WEB?: doesn't sound like a web app. Look at the basics: RMI (google, lots of resources available)
    -Networking: As previously said, Java networking using TCP/IP is painless. Look at the basic Javadocs and google again.
    HTH, Guy
     
    Author and all-around good cowpoke
    Posts: 13078
    6
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    I am designing a data acquisition, processing and display system that will use several processing nodes (linux pc) to distribute the load, and are considering using Java.


    Oh yeah! Java is good at distributed systems - you have a big choice of APIs, from roll-your-own sockets to RMI, Java Message Service, JINI and JavaSpaces to Web Services. You might take a look at the Distributed and Web Service forums here.
    Bill
     
    Ranch Hand
    Posts: 5093
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Forget about EJB and Struts.
    Both are overblown overly complex systems which won't work well for your problem domain (EJB might get interesting if you're planning to seriously scale up and use a distributed server architecture storing the data in an RDBMS).
    JBuilder is a good choice for an IDE, it's decently fast and easy to use.
    It's of course not the only choice but as others have noted there's about as many preferences for IDEs as there are programmers out there.
    Leaving IDE choice up to the individuals is nice but in many environments not an option ("corporate standards" etc.).
    Patterns are integral to successful development, but beware of using them for their own sake.
    Using patterns just to use patterns (which happens a LOT in applications designed up-front) can lead to disaster as the code tends to get more complex than needed.
    MVC is just another pattern (or a compound pattern really) that is recognised as being at the core of writing flexible maintainable code these days.
    What tech to look at?
    Tech should be led by requirements, not the reverse
    You're looking at 2D graphing, which suggests Java2D or maybe some API to generate graphs from numerical data as bitmapped images (probably something like that exists that you can get either for free or commercially, don't reinvent the wheel without good reason).
    If you want the data visualised on screen, you'll need some sort of GUI. Swing is a natural choice for that.
    Communication between the machines you're using might be simplest using RMI or object serialization over network sockets.
    You're going to need multithreading to ensure the machines are responsive enough to talk to each other.
    You might want to think about building the actual number-crunching and data-acquisition code as native code in C(++) and calling it using JNI but that's up to you (you might do it in Java first and see if that's fast enough, quite possibly it is).
    Your team of 5 could well split responsibilities on development.
    Split among the lines of networking/communications, user interface and data processing and assign 2 people to every part (primary + backup) with yourself having a secondary role as system integrator taking charge of the interfaces between those application tiers.
    Don't overdesign, rather set guidelines and let them do their thing as long as they can defend their choices.
     
    With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
    reply
      Bookmark Topic Watch Topic
    • New Topic