Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 285


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Unit test your Java code faster with Groovy

Go to all tips in Java Tools

I'll start with a confession: I'm a unit testing addict. In fact, I just can't write enough unit tests. If I'm developing for long stretches of time without having written corresponding unit tests, I get the jitters. Unit tests give me the confidence that my code works and that I can change it, at a moment's notice, without the fear of it breaking.

Furthermore, as an addict, I tend to write a plethora of test cases. My high, however, isn't from writing the test cases; it's in seeing their results. Consequently, if I can write the tests in a rapid manner, I can view their results quicker. That way I feel better. Quicker.

Of late, I've been looking to Groovy to appease my unit testing addiction, and so far I'm impressed. The agility this new language brings to unit testing is quite exciting and worthy of some serious exploration. In this article, the first in a new series introducing the practical aspects of Groovy, I'll introduce you to the pleasures of unit testing with Groovy. I'll start with an overview of Groovy's unique contributions to development on the Java platform, then move on to discuss the particulars of unit testing with Groovy and JUnit, with special emphasis on Groovy's extension of JUnit's TestCase class. I'll conclude with a working example that shows you, first hand, how to integrate these groovy features with Eclipse and Maven.

No more Java purism!

Before I launch into the practical aspects of unit testing with Groovy, I think it's important to talk about the more general issue of its place in your development toolbox. The fact is, Groovy isn't the only scripting language that runs on the Java Runtime Environment (JRE), it's just the only one that has been proposed as a standard language for the Java platform. As some of you will have learned from the alt.lang.jre series (see Resources), there are myriad options when it comes to scripting for the Java platform, most of them presenting highly agile environments for rapid application development.

Despite this abundance of choices, many developers choose to stick with their favorite and most-familiar paradigm: the Java language. While Java programming is a fine choice for most situations, there is one very important shortcoming to wearing Java-only blinders. As a wise person once put it: If the only tool you have is a hammer, you tend to see every problem as a nail. I think there's a lot of truth to this saying that is applicable to software development.

Just as I hope to convince you with this series that the Java language is not and should not be your only choice for developing applications, it's also true that scripting languages make sense in some scenarios and not in others. What separates the professional from the tyro is knowing when to apply the power of scripting and when to eschew it.

For example, scripting is typically not such a good fit for high-performance, transaction-intensive, enterprise-wide applications; for these cases your best bet could be a normal J2EE stack. On the other hand, scripting -- and particularly scripting with Groovy -- can make a lot of sense when it comes to rapid prototyping of small, highly specific applications that are not performance intensive, such as configuration systems and/or build systems. It's also a near-perfect fit for reporting applications and, most importantly, unit testing.

Why unit test with Groovy?

What makes Groovy particularly appealing with respect to other scripting platforms is its seamless integration with the Java platform. Because it's based on the Java language (unlike other alternate languages for the JRE, which tend to be based on earlier predecessors), Groovy presents an incredibly short learning curve for the Java developer. And once that learning curve has straightened out, Groovy can offer an unparalleled rapid development platform.
All the article with details read here: A simple strategy for unit testing Java code with Groovy and Junit

On our site more about testing:

Improve Eclipse software development with robust logging plug-in
RAD Tutorial w/ JavaServer Faces and WS Portal
EditiX 2.1 - XML Editor & XSLT Debugger
A Look at Binary Runtime Environment for Wireless (BREW)
Use Rhino's Javascript graphical debugger with ITM on Linux and Unix
Annotations in Tiger (J2SE 5.0)
Visual Resource Bundle Inspector for Java
Demo Version of uCertify Exam Simulation PrepKit for Microsoft Exam 70-292 Relea


comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Monday, January 10, 2005 (01:40:37) (3097 reads)

Wireless messaging with JXTA

Go to all tips in Java Mobile Technology

In this two-part series, Faheem Khan demonstrates how to use JXTA technology to integrate thin J2ME clients into enterprise-scale messaging applications. While working through this series, you will develop a set of classes that enable you to integrate J2ME clients into JMS applications running on J2EE servers. This article discusses the basic architecture of a typical messaging application and introduces two application scenarios in which you would need to integrate these clients. It also introduces JXTA and explains how to use the JXTA framework to integrate thin clients into JMS applications.

Integrating J2ME devices into messaging applications

Short messaging is fast becoming a significant source of income for cellular network operators. And now, you can use messaging to integrate wireless devices into enterprise applications. With wireless technologies such as J2ME, you can combine the convenience of wireless messaging with wireless programming to let software modules interact with enterprise application servers and exchange messages. This way, your mobile devices can talk to the database servers, provide updates of pending tasks, fetch new instructions, report to the boss, and even perform transactions while on the move.

Consider a courier company that picks up packages from customer doorsteps. It would be useful if the company could notify its field staff to pick up a package while they were operating in a certain area. For this to happen, the company would have to implement wireless messaging and equip its staff with mobile devices capable of exchanging messages with the company's messaging network.

Access to the required information at the right time is critical in modern business. Another simple wireless messaging application can be one that allows your cell phone to log into your enterprise server during a meeting and instantly get the required information. You might also use your cell phone to update your company's enterprise server about any information you obtain during a client visit.

Architectural requirements for messaging

A messaging solution's asynchronous communication mechanism is its most important feature. It ensures that communicating parties don't have to be exclusively committed to each other during communication. In other words, messaging clients don't talk in real time.

Messaging is like sending or receiving letters or e-mails, in contrast to face-to-face or telephonic conversations, which are inherently synchronous in nature (they require real-time commitment). Browser-like communication is also an example of synchronous communication. A browser sends a request to a Web server and then waits to receive the response, unable to do anything else in the meantime. And if the server is unavailable at the time of the request, communication does not occur.

There are two types of messaging clients: senders and receivers. The sender sends a message, and can then go do some other work. It doesn't have to wait for the response from the message's receiver. The receiver retrieves the message at its own convenience.

Messaging clients operate independently of each other. This means that the messaging framework works even if the sender or the receiver is offline. This inherent messaging flexibility offers a great advantage to networked applications that rely on software components sitting across the Internet. Even if some software components are too busy, offline, or temporarily unavailable, the messaging framework still works.

There needs to be a certain level of reliability for messaging. For example, you must make sure that messages don't get lost in transport and are not duplicated at the receiving end. You must keep the messages stored somewhere while clients are offline. The sender might also require the receiver to acknowledge it received the message.

Therefore, there must be some middleware logic that provides these features to messaging clients. The middleware logic is commonly referred to as Message-Oriented Middleware (MOM). MOM implementations provide messaging support to client applications and also perform administrative tasks (such as maintaining a client list as well as queues for each client). The sender client sends a message to MOM and the receiver client later contacts MOM to retrieve the message.

The Java-based messaging solution

JMS is an API that provides a messaging framework to Java applications. Messaging clients can use the JMS API to communicate with the JMS middleware and exchange messages with other JMS clients connected to the same JMS network.

Messaging solution providers implement the JMS API in their application servers (for example, IBM WebSphere®), while application developers rely on the JMS API to develop client applications. This avoids vendor lock-in. It also means that every messaging application will comprise of a JMS-specific set of classes (that are part of the JMS API implementation) and an application-specific set of classes (that implement all application-specific messaging logic). The JMS-specific set of client-side classes provides all the messaging features, such as authoring messages and exchanging them with the JMS middleware.

In JMS terminology, the MOM implementation is referred to as the JMS provider. All clients connect to the JMS provider, as Figure 1 shows. All messaging between the clients is done through the provider. The provider provides various administrative and resource management services; for example, it stores messages from the senders until the receivers fetch their messages. You can say the provider acts as a broker between the message senders and receivers.

Full text here



6 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Wednesday, December 29, 2004 (00:00:00) (3111 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286|
285
| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy